浅析CountDownLatch闭锁底层实现原理

Posted 漫话人生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析CountDownLatch闭锁底层实现原理相关的知识,希望对你有一定的参考价值。

🍀CountDownLatch是基于AQS同步器的一种同步工具,它可以让一个或多个线程等待,一直等到其他线程完成一组工作,它是AQS共享模式的实现。

它的使用方式如下:

查看它的内部实现,它的设计模型和ReentrantLock类似,都是内部定义了一个Sync继承了AQS同步器。而且CountDownLatch内部并没有太多的方法。

首先查看它的构造方法,如果了解过ReentranLock的实现,那么你就会很熟悉了,老一套。

✨与ReentrantLock中的Sync不同的是,它们虽然都是继承了AQS抽象类,但是ReentrantLock中的Sync是一个抽象类,还需要FairSync和NonfairSync继续继承Sync来完成公平锁和非公平锁的设计;注意CountDownLatch并没有实现Lock接口,因为CountDownLatch本质上是一个计数器,不需要获取锁和释放锁等操作。

✨查看它的计数器减1方法


✨查看await()方法


它定义tryAcquireShared(arg)<0是用来判断state是否等于0,看下面就明白了

(1)深入HotSpot虚拟机源码探究synchronized底层实现原理【万字总结synchronized】https://blog.csdn.net/Kevinnsm/article/details/124688097
(2)一文彻底搞懂ReentrantLock原理【基于AQS的公平锁+非公平锁】https://blog.csdn.net/Kevinnsm/article/details/124801690?spm=1001.2014.3001.5502

创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

以上是关于浅析CountDownLatch闭锁底层实现原理的主要内容,如果未能解决你的问题,请参考以下文章

浅析CountDownLatch闭锁底层实现原理

Java并发编程原理与实战二十六:闭锁 CountDownLatch

Juc21_强大的三个工具类CountDownLatch 闭锁 CyclicBarrier Semaphore

并发包下常见的同步工具类详解(CountDownLatch,CyclicBarrier,Semaphore)

CountDownLatch(闭锁)Semaphore(信号量)CyclicBarrier

concurrent并发包之CountDownLatch