CountDownLatch
CountDownLatch初始化一个state,
调用await方法,如果state=0,那么获得锁,如果state>0,那么加入到等待队列
调用countDown方法,自旋cas做state-1操作,如果state=0,唤醒等待队列次头节点,同时自旋唤醒,被唤醒的线程把次头节点设置为头节点,在唤醒次头节点的线程。由于把次头节点设置为头节点这个操作和唤醒次头节点的操作不是原子操作,所以次头节点设置为头节点操作结束,其他还在自旋唤醒的线程,也有可能唤醒这个节点,此时会加速等待队列的唤醒操作,直至所有的节点唤醒完毕。
执行过程
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。