AbstractQueuedSynchronizer抽象队列同步器

核心属性

state

  1. // 同步状态
  2. private volatile int state;

volatile修饰保证state可见性。

CAS修改state方法compareAndSetState()

VarHandle提供state的底层CAS修改方法。state指向的具体值,VarHandle对象可以理解为跟state指向同一个值,但是VarHandle对象有CAS原子修改指向的值的方法。
VarHandle可以直接操作二进制字节码。

head

  1. // 等待队列的头部,懒加载
  2. private transient volatile Node head;

tail

  1. // 等待队列的尾部,懒加载
  2. private transient volatile Node tail;

核心内部类

Node

核心执行链路