CountDownLatch
image.png
CountDownLatch初始化一个state,
调用await方法,如果state=0,那么获得锁,如果state>0,那么加入到等待队列
调用countDown方法,自旋cas做state-1操作,如果state=0,唤醒等待队列次头节点,同时自旋唤醒,被唤醒的线程把次头节点设置为头节点,在唤醒次头节点的线程。由于把次头节点设置为头节点这个操作和唤醒次头节点的操作不是原子操作,所以次头节点设置为头节点操作结束,其他还在自旋唤醒的线程,也有可能唤醒这个节点,此时会加速等待队列的唤醒操作,直至所有的节点唤醒完毕。

执行过程
image.png


一只鱼
49 声望1 粉丝

« 上一篇
Condition
下一篇 »
ThreadLocal

引用和评论

0 条评论