文章目录
- 什么是CAS, 什么是AQS
- CAS
- AQS
什么是CAS, 什么是AQS
CAS
AQS
AQS 全称是AbstractQueuedSynchronizer, 是juc 下一个核心的抽象类,用于构建各种同步器和锁
比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS.
首先在AQS 里面,有几个核心的组成
● 有volatile修饰的 state 变量: 共享资源的状态
● 以Node节点组成的双端队列——CLH 也是由volatile进行修饰
● 两个维护队列的Node节点head 和 tail
AQS 基本的属性——源码
public abstract class AbstractQueuedSynchronizerextends AbstractOwnableSynchronizerimplements java.io.Serializable {//头节点private transient volatile Node head;//尾节点private transient volatile Node tail;//同步状态private volatile int state; static final class Node {//节点状态volatile int waitStatus;//前驱节点volatile Node prev;//后继节点volatile Node next;//当前节点所代表的线程volatile Thread thread;//等待队列使用时的后继节点指针Node nextWaiter;}
}