AQS是Java并发包的核心基础框架,JUC中大多数同步器(如ReentrantLock、CountDownLatch等)都是基于它实现的。
一、AQS核心设计
1. 三大核心组件
| 组件 | 作用 |
|---|---|
| state | volatile int,表示同步状态(如锁的重入次数、信号量剩余数量等) |
| CLH队列 | 双向FIFO等待队列,存储阻塞线程(Craig, Landin, and Hagersten锁队列的变种) |
| Condition队列 | 单向链表,用于实现条件等待/通知机制 |
2. 关键模板方法
// 需要子类实现的方法
protected boolean tryAcquire(int arg) // 尝试获取独占锁
protected boolean tryRelease(int arg) // 尝试释放独占锁
protected int tryAcquireShared(int arg) // 尝试获取共享锁
protected boolean tryReleaseShared(int arg) // 尝试释放共享锁
二、独占模式(如ReentrantLock)
1. 获取锁流程(acquire)
public final void acquire(int arg) {
if (!tryAcquire(arg) && // 尝试获取锁(子类实现)
acquireQueued(addWa

最低0.47元/天 解锁文章
176

被折叠的 条评论
为什么被折叠?



