「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


簡単ですが以上です。

[ 環境情報 ]
Windows 7 SP1
Java SE 7 Update 51