并发之JUC常用的工具类有哪些

q1871901600 发布于 2024-11-14 32 次阅读


同步工具同步工具与AQS的关联
ReentrantLock使用AQS保存锁重复持有的次数。当一个线程获取锁时,ReentrantLock记录当前获得锁的线程标识,用于检测是否重复获取,以及错误线程试图解锁操作时异常情况的处理。
Semaphore使用AQS同步状态来保存信号量的当前计数。tryRelease会增加计数,acquireShared会减少计数。
CountDownLatch使用AQS同步状态来表示计数。计数为0时,所有的Acquire操作(CountDownLatch的await方法)才可以通过。
ReentrantReadWriteLock使用AQS同步状态中的16位保存写锁持有的次数,剩下的16位用于保存读锁的持有次数。
ThreadPoolExecutorWorker利用AQS同步状态实现对独占线程变量的设置(tryAcquire和tryRelease)。

ReentrantLock 原理:

并发之ReentrantLock的condition队列和CLH队列 | jhon的技术分享

并发之ReentrantLock(可重入锁) | jhon的技术分享

Semaphore和CountDownLatch使用场景:

java并发之Countdownlatch和Semaphore | jhon的技术分享

ThreadPoolExecutor原理

ThreadPoolExecutor原理 | jhon的技术分享

参考文章:

从ReentrantLock的实现看AQS的原理及应用 - 美团技术团队

一个会写python的Java工程师
最后更新于 2024-11-21