modor
10/26/2017 - 11:58 AM

CoundDownLatchTest

package servlet.test;

import java.util.concurrent.CountDownLatch;

public class CoundDownLatchTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		CountDownLatch countDownLatch = new CountDownLatch(3);
		CustomThreadCoundDownLatch customThread = new CustomThreadCoundDownLatch(countDownLatch, "A thread");
		customThread.start();
		try {
			System.out.println("3");
			countDownLatch.countDown();
			Thread.sleep(1000);
			System.out.println("2");
			countDownLatch.countDown();
			Thread.sleep(1000);
			System.out.println("1");
			countDownLatch.countDown();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

class CustomThreadCoundDownLatch extends Thread {
	private CountDownLatch countDownLatch;

	public CustomThreadCoundDownLatch(CountDownLatch countDownLatch, String name) {
		setName(name);
		this.countDownLatch = countDownLatch;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		try {
			countDownLatch.await();
			System.out.println(getName() + " start running.");
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}