JavaのCountDownLatchのサンプルプログラム
複数スレッドに計算をさせ、計算結果を最後に合計する。 この設計では、各スレッドの計算が全て終わってから合計処理を行う必要があるので、合計処理はスレッドの計算完了を待機しなければならない。 この待機機能にCountDownLatchを使う。
- メインスレッドはワーカースレッドを複数起動し、計算をさせる。
- メインスレッドはCountDownLatch#awaitにより、ワーカースレッドの計算終了を待機する。
- 計算が終わったワーカースレッドはCountDownLatch#countDownを呼び出し、CountDownLatchのカウントを減らす。
- CountDownLatchのカウントが0になると、メインスレッドの処理が再開する。
- メインスレッドは、ワーカースレッドの計算結果を全ての合計し、合計値をコンソール出力する。
Java 1.8