import java.util.concurrent.CountDownLatch;
* CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 主要方法 public
* CountDownLatch(int count); public void countDown(); public void await()
* throws InterruptedException 构造方法参数指定了计数的次数 countDown方法,当前线程调用此方法,则计数减一
* awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0
*
* 作用:可以用来确保某些活动直到其他活动都完成后才继续执行。
* 使用场景:
* 1、例如ABC上学校然后一起上课;
* 2、某个操作需要的资源初始化完毕
* 3、某个服务依赖的线程全部开启等等...
*
* @author huawangxin 2017年2月17日 上午11:05:24
*参考:
*http://blog.csdn.net/lmj623565791/article/details/26626391
*http://www.iteye.com/topic/1002652
*/
public class TestCountDownLatch {
private static CountDownLatch latch = new CountDownLatch(3);
public static void main(String[] args) throws InterruptedException {
new Thread() {
public void run() {
A();
latch.countDown();
};
}.start();
new Thread() {
public void run() {
B();
latch.countDown();
};
}.start();
new Thread() {
public void run() {
C();
latch.countDown();
};
}.start();
latch.await();
D();
}
public static void A() {
System.out.println("A在去学校的路上");
}
public static void B() {
System.out.println("B在去学校的路上");
}
public static void C() {
System.out.println("C在去学校的路上");
}
public static void D() {
System.out.println("开始上课了");
}
}