1、在java.util.concurrent包下
- 在java1.5被引入的
- 一起引入的并发工具类CyclicBarrier、Semaphore、ConcurrentHashMap和BlockingQueue
2、CountDownLatch 使一个线程等其他线程完成各自的工作后在执行
3、CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量
- 构造器中的计数值(count)实际上就是闭锁需要等待的线程数量
- 没有提供任何机制去重新设置这个计数值
//Constructs a CountDownLatch initialized with the given count.
public void CountDownLatch(int count) {...}
4、主线程必须在启动其他线程后立即调用CountDownLatch.await()方法
- 其他N 个线程必须引用闭锁对象
- 通知机制是通过 CountDownLatch.countDown()方法来完成
- count的值等于0时,主线程就能通过await()方法,恢复执行自己的任务