公司动态
【Java核心高阶进阶】25-AQS原理深度剖析
25 | AQS 原理深度剖析:state、CLH 队列、独占与共享(源码级)模块六:JUC并发框架与锁机制 · 第1篇,从state变量到CLH队列,逐行拆解JUC同步器的基石框架。一、AQS 全称与定位AQS 全称 AbstractQueuedSynchronizer,是 Doug Lea 在 JDK 1.5 引入的同步框架。它是 ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch、CyclicBarrier、ThreadPoolExecutor 的 Worker 等几乎全部 JUC 同步工具的底层基石。AQS 的核心设计思想:模板方法模式 + CLH 变体等待队列。框架负责管理同步状态和线程排队,子类只需重写tryAcquire/tryRelease等模板方法即可实现不同语义的同步器。AQS 本身是抽象类,但它不强制子类是抽象类——子类通常以内部类形式存在(如 ReentrantLock 的 Sync)。AQS 有两种模式:独占模式(Exclusive):同一时刻只有一个线程能获取同步状态,如 ReentrantLock共享模式(Shared):允许多个线程同时获取同步状态,如 Semaphore、CountDownLatch