Javaで複数のスレッドの開始と停止を制御する方法は何ですか。
Javaには、マルチスレッドの開始と停止を制御するための一般的な方法がいくつかあります。
- Threadクラスを使用すると、スレッドを開始するためにThreadクラスのstart()メソッドを呼び出し、スレッドを停止するためにスレッドオブジェクトのinterrupt()メソッドを呼び出すことができます。
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// 线程执行的代码
}
});
thread.start(); // 启动线程
thread.interrupt(); // 停止线程
- Runnable インターフェースの使用:Runnable インターフェースを実装したクラスのオブジェクトを作成し、それを Thread クラスのコンストラクタに渡すことでスレッドを開始できます。スレッドを停止する方法も同じです。
Runnable runnable = new Runnable() {
@Override
public void run() {
// 线程执行的代码
}
};
Thread thread = new Thread(runnable);
thread.start(); // 启动线程
thread.interrupt(); // 停止线程
- スレッドの開始と停止を制御するために共有変数を使用できます。ある共有変数の値を設定することで、スレッドの実行ロジックを制御し、特定の条件下でスレッドがループを抜けて停止するようにします。
volatile boolean isRunning = true; // 共享变量
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (isRunning) {
// 线程执行的代码
}
}
});
thread.start(); // 启动线程
isRunning = false; // 停止线程
重要なのは、上記の方法は全て協力的な方法を通じてスレッドの起動と停止を制御するものであり、つまりスレッド自体がいつ終了するかを決定するという点です。さらに、スレッドを停止する方法はスレッドを強制的に終了させるのではなく、フラグを設定するか割り込み信号を送ることでスレッドの停止をリクエストする方法です。スレッドは適切なタイミングでこれらの条件を確認し、自らループを抜けることでスレッドの実行を停止します。