Stop() の代替としてのスレッド中断
「stop()」メソッドは、Java では一般的に推奨されません。予期せぬ副作用を引き起こします。スレッドを終了する別の方法は、割り込みによるものです。
スレッド割り込み
スレッドの割り込みは、スレッドの実行を正常に停止する必要があることを通知します。スレッドを中断するには、その「interrupt()」メソッドを呼び出します。スレッドが正常に動作し、割り込みを適切に処理する場合、スレッドは終了する前に現在のタスクを終了しようとします。
実装例
次のコードを考えてみましょう。
Thread thread = new Thread(new Runnable() { @Override public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(5000); System.out.println("Hello World!"); } catch (InterruptedException e) { Thread.currentThread().interrupt(); System.out.println("Thread interrupted"); } } } });
このコードでは、スレッドはループ内で割り込みステータスを確認します。割り込みが発生すると、「InterruptedException」がスローされ、これが処理されてスレッドの割り込みステータスが再度設定されます。その後、スレッドはループを抜けて終了します。
考慮事項
「Thread#isAlive() とThread#interrupted()
以上がスレッド中断は、Java の非推奨の `stop()` メソッドのより良い代替手段ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。