AQS
AQS 提供了一个"排队+阻塞+唤醒"的标准化框架,让任何需要"多线程竞争同一个资源"的场景,都可以直接复用这套逻辑,而不需要重复造轮子。
AQS在Java并发包里的位置

AQS解决的根本问题

用一张图看懂AQS干了什么


三大核心机制
核心机制一:状态位

核心机制二:一个"候车队列",让失败者排队

核心机制三:状态牌

为什么必须用双向列表


waitStatus = SIGNAL 到底在驱动什么?



公平锁与非公平锁

ReentrantLock 可重入怎么实现?




💀 致命追问:"独占模式和共享模式在AQS里有什么区别?"
独占模式(如ReentrantLock)的tryAcquire返回boolean,一次只能一个线程持有;共享模式(如Semaphore、CountDownLatch)的tryAcquireShared返回int(剩余资源数),大于0时可以多个线程同时获取。释放时,独占模式只唤醒一个后继节点;共享模式会链式唤醒,只要还有剩余资源就不断唤醒下一个,让多个线程同时持有。