実行中に停止する必要がある長時間実行スレッドに遭遇した場合、予期せぬ結果を避けるために正常に終了することが重要です。 .
これを実現するための一般的なアプローチは、スレッドの run() メソッド内に制御変数を導入することです。この変数 (通常はブール値のフラグ) は、終了リクエストを通知する番兵として機能します。
次の例を考えてみましょう。
class MyThread extends Thread { volatile boolean finished = false; public void stopMe() { finished = true; } @Override public void run() { while (!finished) { // Perform the necessary actions } } }
メイン スレッドから、次のように実行を正常に停止できます。 stopMe() メソッドの呼び出し:
MyThread myThread = new MyThread(); myThread.start(); // Wait some time to simulate work Thread.sleep(500); myThread.stopMe();
以前、Java には stop() メソッドがありましたが、スレッドの状態を破損し、取得したロックを解除する可能性があるため、安全ではないと宣言されました。したがって、制御変数アプローチを使用することは、クリーンで制御されたスレッド終了を保証するための推奨される方法です。
以上がJava スレッドを正常に終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。