javaで複数のスレッドを実行したときの停止方法
Javaでは、スレッドの実行を停止するための一般的な方法がいくつかあります。
- フラグ変数を利用する:スレッドのrunメソッド内で、スレッドが動作継続するかどうかを制御するフラグ変数を使用する。スレッドの停止が必要になったときに、フラグ変数をfalseに設定し、スレッド内でこの変数の値を検査してfalseの場合はスレッドの動作を終了させる。
class MyThread extends Thread {
private volatile boolean flag = true;
public void stopThread() {
flag = false;
}
@Override
public void run() {
while (flag) {
// 线程运行的代码
}
}
}
- スレッドの `interrupt()` メソッドを呼び出すことで、スレッドの実行を中断して `InterruptedException` 例外を発生できます。スレッドの実行メソッドでは、`isInterrupted()` メソッドを使用してスレッドが中断されたかどうかを確認し、スレッドを停止する必要がある場合は `interrupt()` メソッドを使用して中断できます。
class MyThread extends Thread {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
// 线程运行的代码
if (Thread.currentThread().isInterrupted()) {
break;
}
}
}
}
- stop()メソッドの使用(推奨されません):stop()メソッドは、スレッドの実行を即座に停止できますが、非推奨メソッドとしてマークされています。スレッドのリソースが解放されなかったり、スレッドの状態が破損したりする可能性があり、潜在的に問題が発生する可能性があるためです。したがって、stop()メソッドを使用してスレッドの実行を停止することは推奨されません。
Thread thread = new Thread();
thread.stop();
スレッドの実行停止はシグナル変数かinterrupt()メソッドが推奨されており、stop()メソッドは非推奨です。