ループで実行されるスレッドがあり、スレッドを開始したダイアログが閉じたらスレッドを強制終了したいと考えています。それを行う最善の方法は何ですか?
質問する
293 次
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 に答える