欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CountDownLatch 源码分析

程序员文章站 2022-07-12 19:34:10
...
思路分析:


CountDownLatch 的思路是:首先申请锁的时候,假设以 6 申请锁. 此时线程阻塞. 参考独占锁中的重入锁.

此时:假设一个独占锁多次申请锁的话,那么假设此时 state = 6.

这时候就跟共享锁初始的时候申请锁差不多了.


现在每调用一次 countDown 方法的时候,state -1

当 state = 0 的时候,是不是说明没有再占用锁了?那么此时线程就可以执行了.



CountDownLatch 的实现思路从始至终只有一个线程在队列中,也就是主线程.

它的 countDown 方法只是将 state 减一. 当 count=0时,调用 doReleaseShared 方法释放锁.



而他的 await 方法从始至终就是一个线程在自旋,然后自我阻塞. 然后 await 方法返回,继续执行.