引子:武林大会的“门派秘技”
话说江湖中,武林高手云集,各大门派都带着自己的独门秘籍来争夺武林至尊。而在 Java 的并发世界里,也有一个隐藏的“武林秘籍”,那就是 AQS(AbstractQueuedSynchronizer)。
这套秘籍看似深奥,实则掌控着 Java 并发的半壁江山。无论是 ReentrantLock(可重入锁)、Semaphore(信号量)、CountDownLatch(倒计时器),还是 ReentrantReadWriteLock(读写锁),背后都离不开 AQS 的加持。
今天,小米就化身少林扫地僧,给大家掰开了、揉碎了,讲清楚 AQS 的“武学精髓”!
AQS 是什么?
AQS,全称 AbstractQueuedSynchronizer,是 JDK 并发包(java.util.concurrent)中用于构建锁和同步器的基础框架。
用武侠比喻,AQS 就像是一个 “武功心法”,它本身并不直接用于战斗(业务开发),但几乎所有高级武学(锁、同步器)都基于它来实现。
AQS 的核心思想:CLH 队列
AQS 底层采用了一种叫 CLH(Craig, Landin, and Hagersten)队列 的数据结构,它本质上是一个