Java でマルチスレッドを使用する場合、スレッドを途中で終了する必要がある場合があります。適切な実行を保証し、システムの不安定性を防ぐには、スレッドを「適切に」停止することが重要です。これには、スレッドが実行を終了する前に重要な操作を完了できるようにすることが含まれます。
問題:
実行に過度に時間がかかるスレッドを作成しました。 。未完了のように見えても、スレッドを正常に停止したいと考えています。
解決策:
これを達成するための推奨されるアプローチは、ターゲット スレッド内のブール変数を利用することです。 run()メソッド。このフラグを外部から true に設定すると、スレッドに正常に終了するよう通知されます。以下に例を示します:
class MyThread extends Thread { volatile boolean finished = false; public void stopMe() { finished = true; } @Override public void run() { while (!finished) { // Perform tasks } } }
stop() メソッドを避ける:
以前は Thread.stop() メソッドが存在していましたが、その使用は強く行われています。落胆した。 Java のドキュメントによると、このメソッドは実行時に「ロックされているすべてのモニターのロックを解除」するため、データの不整合や任意の動作が発生する可能性があります。
したがって、上に示したようにブール型フラグを利用すると、安全かつ安全な操作が保証されます。制御されたスレッド終了メカニズム。
以上がJava スレッドを安全かつ正常に停止するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。