Javaでスレッドを中断する方法は何ですか?
Javaでスレッドを中断する方法は2つあります。
- Threadクラスのinterrupt()メソッドを使用すると、スレッドの中断状態がtrueに設定されます。スレッドがブロックされている状態(sleep()、wait()、join()メソッドが呼び出されている場合など)では、InterruptedException例外が即座にスローされ、スレッドがブロックを解除します。スレッドのコードでは、スレッドの中断状態を判断してスレッドを終了するかどうかを決定することができます。
- スレッドの実行状態を制御するために共有変数を使用します。共有変数(例えばboolean型のflag)を設定し、スレッドのコード内でその値に基づいてスレッドを終了するかどうかを決定できます。スレッドを中断する必要がある場合、共有変数の値をfalseに設定することで、スレッドのループを終了させたりスレッドを終了させることができます。
上記の2つの方法は、実行中のスレッドを強制的に終了することはできず、協力的な方法でスレッドを終了させることしかできません。