Java スレッドを停止する方法は、マルチスレッド プログラムを開発するときに常に一般的な問題でした。多くの人から質問を受けたので、Java で実行中のスレッドを安全に終了する方法をより多くの人に知ってもらいたいと考えて、今日はここにまとめておきます。
Java マルチスレッド プログラミングでは、java.lang.Thread 型に一連のメソッド start()、stop()、stop(Throwable)、およびsuspend() が含まれています。 、destroy()、resume()。これらのメソッドを通じて、スレッド上で便利な操作を実行できますが、これらのメソッドのうち、start() メソッドのみが保持されます。
これらのメソッドを廃止する理由については、JDK ヘルプ ドキュメントと Sun の記事「Thread.stop、Thread.suspend、および Thread.resume が非推奨になるのはなぜですか?」で説明されています。
では、スレッドを停止するにはどうすればよいでしょうか?
共有変数を使用する
この方法で共有変数を導入する理由は、同じタスクを実行する複数のスレッドで変数を使用できるためです。中断するかどうか、中断されたスレッドの実行を通知します。
public class ThreadFlag extends Thread { public volatile boolean exit = false; public void run() { while (!exit); } public static void main(String[] args) throws Exception { ThreadFlag thread = new ThreadFlag(); thread.start(); sleep(3000); // 主线程延迟3秒 thread.exit = true; // 终止线程thread thread.join(); System.out.println("线程退出!"); } }
上記のコードでは、終了フラグ exit が定義されています。exit が true の場合、while ループは終了します。exit のデフォルト値は false です。 exit を定義するとき、Java キーワード volatile が使用されます。このキーワードの目的は exit を同期することです。つまり、exit の値を同時に変更できるのは 1 つのスレッドだけです。
以上がJavaでスレッドを停止する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。