ホームページ > Java > &#&チュートリアル > 「stop()」を使用せずにJavaでスレッドを安全に強制終了するにはどうすればよいですか?

「stop()」を使用せずにJavaでスレッドを安全に強制終了するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-29 15:01:10
オリジナル
790 人が閲覧しました

How Can I Safely Kill a Thread in Java Without Using `stop()`?

stop() を使用せずにスレッドを強制終了する

マルチスレッド プログラミングでは、スレッドを終了する必要がある場合があります。 stop() メソッドは突然の解決策を提供しますが、リソース リークの可能性があるため、その使用は推奨されません。この記事では、スレッド終了の代替メソッドである割り込みについて説明します。

割り込みの使用

割り込みメソッドは、スレッドに実行を正常に終了するよう通知します。呼び出されると、スレッドは割り込みステータスをチェックし、true の場合は InterruptedException をスローします。この例外はスレッドの run メソッド内でキャッチして処理できるため、リソースをクリーンアップして正常に終了できます。

割り込みの使用例を次に示します。

public class HelloWorld {

    public static void main(String[] args) throws Exception {
        Thread thread = new Thread(new Runnable() {

            public void run() {
                try {
                    while (!Thread.currentThread().isInterrupted()) {
                        Thread.sleep(5000);
                        System.out.println("Hello World!");
                    }
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });
        thread.start();
        System.out.println("press enter to quit");
        System.in.read();
        thread.interrupt();
    }
}
ログイン後にコピー

考慮事項

  • スレッドを中断すると、sleep() と wait() がすぐにスローされます。 InterruptedException。無期限のブロックを防ぎます。
  • 停止中のスレッドは、割り込みステータスをチェックし、InterruptedExceptions をキャッチして実行ループを終了することで連携する必要があります。
  • catch ブロック内の現在のスレッドに割り込みを設定するのが最適です。練習してください。ただし、単純な場合には不要な場合があります。

投稿済みコード

投稿されたコードにはいくつかの問題があります:

  • 現在のスレッドはインスタンス変数で参照されており、実行中のスレッドを正確に反映していない可能性があります。
  • スレッドの生存チェックは常に true を返しますが、interrupt は割り込みフラグをクリアし、不必要に

結論として、割り込みを使用すると、スレッド終了に対するより制御されたアプローチが提供され、リソースが適切にクリーンアップされることが保証されます。ただし、停止中のスレッドの協力が必要です。

以上が「stop()」を使用せずにJavaでスレッドを安全に強制終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート