「Java」CountDownLatch 使ってみた
CountDownLatch なる指定したカウントが 0 になるまで、スレッド待機させることができる同期機構があるみたいなので、ちょっと使ってみました。
・CountDownLatch (Java Platform SE 7 )
https://docs.oracle.com/javase/jp/7/api/java/util/concurrent/CountDownLatch.html
一応、以下みたいな感じのコードで動作は確認できる。
import java.util.concurrent.CountDownLatch; public class Test { public static void main(String[] args) { CountDownLatch cdl = new CountDownLatch(5); new MyThread1(cdl).start(); new MyThread2(cdl).start(); } } class MyThread1 extends Thread { CountDownLatch cdl; public MyThread1(CountDownLatch cdl) { this.cdl = cdl; } public void run() { System.out.println("start"); try { cdl.await(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("end"); } } class MyThread2 extends Thread { CountDownLatch cdl; public MyThread2(CountDownLatch cdl) { this.cdl = cdl; } public void run() { for (int i = 1; i <= 5; i++) { System.out.println(i); cdl.countDown(); } } }
■ 結果
MyThread1 : start MyThread2 : 1 MyThread2 : 2 MyThread2 : 3 MyThread2 : 4 MyThread2 : 5 MyThread1 : end
簡単ですが以上です。