Revised: Mar./23rd/2002
以前に紹介したとおり、マルチスレッドで、特定のスレッドの終了を待機している場合は、 join()
メソッドを用います。指定したスレッドが終了するまで、このメソッドを呼んだ自分自身の実行を一時停止します。
より明示的にスレッドの実行を待機/復帰させる為に wait()
/notify()
メソッドを利用することが出来ます。これらのメソッドは Thread
クラスではなく、 Object
クラスで定義されています。
あるオブジェクトの wait()
メソッドを呼び出すと、そのオブジェクトのロックを取得していたスレッドは一時停止して握っていたロックとシステムリソースを解放します。こうして一時停止したオブジェクトの notify()
を別のスレッドが呼び出すと、このオブジェクト上で待機していたスレッドは再び実行されます。
sleep()
メソッドの場合は、指定した時間後に実行可能状態に移します。 wait()
メソッドは、 notify()
実行後に、実行可能状態に遷移します。