AQS源码分析
AQS(AbstractQueuedSynchronizer)通过 volatile 的 state 与 CLH 双向链表实现同步,维护 head、tail 指向的等待队列。它支持独占和共享两种模式,核心方法 acquire/release 与 acquireShared/releaseShared 采用模板方法,子类只需实现 tryAcquire/tryRelease 或对应的共享 try 方法。Node 类保存线程、前后指针、waitStatus(CANCELLED、SIGNAL、CONDITION、PROPAGATE)等信息。文中以自定义 Mutex 为例展示独占同步器的实现,包括 tryAcquire、tryRelease、ConditionObject 的使用,并分析 acquire、addWaiter、enq 等源码流程,说明线程如何加入等待队列并竞争资源。