スレッドを一時停止する方法を教えてください。
Javaでスレッドを一時停止する方法は次のとおりです。
- スレッドクラスの sleep() メソッドを使うこともできます: これは現在のスレッドを指定の時間(ミリ秒単位)停止させてから実行を再開します。
try {
Thread.sleep(1000); // 暂停当前线程1秒钟
} catch (InterruptedException e) {
e.printStackTrace();
}
- Object クラスの wait() メソッドを使う:現在のスレッドを一時停止してオブジェクトのロックを解放し、オブジェクトの notify() または notifyAll() メソッドで他のスレッドから呼び出されてそのスレッドをウェイクアップするまで待機する。
synchronized (object) {
try {
object.wait(); // 暂停当前线程,等待其他线程唤醒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
- Threadクラスのjoin()メソッドを用いれば、あるスレッドの終了を待ち、現在スレッドの実行を継続できます。
Thread t = new Thread(new Runnable() {
@Override
public void run() {
// 子线程执行的任务
}
});
t.start(); // 启动子线程
try {
t.join(); // 等待子线程终止后再继续执行主线程
} catch (InterruptedException e) {
e.printStackTrace();
}
ここで注意すべき点は、述べた方法は全て現在のスレッドを一時停止するものであり、他のスレッドを一時停止するものではない、という点である。他のスレッドを一時停止したい場合には共有変数やロックを使ってスレッド間に通信を行い、他のスレッドの実行を停止させる必要がある。