Java 并发
AbstractQueuedSynchronizer(AQS)
技术参考:https://tech.meituan.com/2019/12/05/aqs-theory-and-apply.html
Java 并发包(java.util.concurrent)中的一个核心类,位于 java.util.concurrent.locks 包中。它是构建锁和同步器的基础框架,提供了一个通用的机制来实现线程同步。AQS 的设计非常灵活,许多常用的同步工具(如 ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier 等)都基于 AQS 实现。
AQS 的核心是一个基于 FIFO 队列的线程等待机制,它通过维护一个状态变量(state)和等待队列(CLH 队列)来管理线程的同步。其主要思想包括:
- 状态变量(
state):- 用于表示同步状态,通常是一个
int类型的变量。 - 子类可以根据需要定义状态的含义,例如:
- 在锁中,
state表示锁的获取状态(0 表示未锁定,1 表示锁定)。
- 在锁中,
- 用于表示同步状态,通常是一个