スレッドのJoinメソッドの仕組み
スレッドのjoinメソッドは、あるスレッドが終了するのを待つためのメソッドです。あるスレッドが他のスレッドのjoinメソッドを呼び出した場合、呼び出したスレッドは他のスレッドが終了するまで待機してから実行を再開します。
具体的な仕組みは以下のとおりです。
- スレッドが他のスレッドのjoinメソッドを呼び出すと、現在のスレッドは呼び出されたスレッドの実行完了を待つ状態になります。
- 呼ばれたスレッドが実行を終えると、waitしているスレッドを呼び出すnotifyAllメソッドが呼ばれます。
- 呼び出されたスレッドの実行が終わると、自身が保持していたロックが解除され、ロックの解除を待っていた他のスレッドがロックを獲得し、実行を継続できる。
ジョインメソッドでは1スレッドの実行しか待てません。複数スレッドの実行を待つ場合はCountDownLatchやCyclicBarrierなどのマルチスレッド協調ツールを使用します。