CountDownLatch在多线程并发编程中充当一个计时器的功能,并且维护一个count的变量,并且其操作都是原子操作。如下图,内部有下static final的Sync类继承自AQS.该类主要通过countDown()和await()两个方法实现功能的,首先通过建立CountDownLatch对象,并且传入参数即为count初始值。CountDownLatch 的作用和 Thread.join() 方法类似,让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。在线程池出现后,因为线程池中的线程不能直接被引用,所以就必须使用 CountDownLatch 了。从源代码和实现原理中可以看出一个CountDownLatch对象,只能使用一次,不能重复使用。await方法源码doAcquireSharedInterruptibly 主要实现线程的入列与阻塞。

java并发学习-CountDownLatch实现原理全面讲解

java并发学习-CountDownLatch实现原理全面讲解

java并发学习-CountDownLatch实现原理全面讲解

java并发学习-CountDownLatch实现原理全面讲解

java并发学习-CountDownLatch实现原理全面讲解