1

ループで実行されるスレッドがあり、スレッドを開始したダイアログが閉じたらスレッドを強制終了したいと考えています。それを行う最善の方法は何ですか?

4

2 に答える 2

5

interrupt()スレッドを呼び出すことができます。ただし、スレッドループ内で何かをしない限り、これはスレッドを停止しません。

Thread t = new Thread() {
    @Override
    public void run() {
        while (shouldLoop() && !isInterrupted()) {
            . . .
        }
    }
}();

// somewhere else:
t.interrupt(); // will exit thread on next loop iteration

使用したくない場合interrupt()(たとえば、スレッドへの参照がない場合)、スレッド コードにアクセスできる場所にフラグを設定できます。スレッドループでそれをチェックし、ループ(およびrun()メソッド)を終了してスレッドを終了する必要があります。

于 2012-11-20T02:41:13.780 に答える
0

ダイアログの閉じるイベントをリッスンして、スレッドを中断できます。

于 2012-11-20T02:41:04.420 に答える