AQS 底层
AQS
JDK中许多并发工具类的内部实现都依赖于AQS,如ReentrantLock, Semaphore, CountDownLatch等。
AQS底层依靠CAS与同步队列。
AbstractQueuedSynchronizer(队列同步器)
volatile int state;
- 一个保证可见性的参数
- 由于AbstractQueuedSynchronizer是一个抽象类并没有规定state的具体业务含义
- state 的含义 由各个实现了队列的实现类自行定义。
public class Node{
volatile Thread thread; //线程
volatile Node prev; //上一个元素
volatile Node next; //下一个元素
volatile int waitStatus; //状态
}
- 其实队列容器中会存在一个LinkedList
<Node>
- 每个node里都会包含他的上一个元素,下一个元素,线程执行状态,类似一个线程池的概念