AQS(AbstractQueuedSynchronizer)是 Java 并发包的基石。理解 AQS,就等于拿到了理解 ReentrantLock、Semaphore、CountDownLatch、ReentrantReadWriteLock 等一系列同步工具的万能钥匙。本文将从核心设计到源码逐行剖析,带你彻底搞懂 AQS。
一、AQS 核心设计:state + CLH 队列
1.1 设计哲学
AQS 的核心思想可以用一句话概括:用一个 volatile int state 表示同步状态,用一个 CLH 变种队列管理等待线程。