AbstractQueuedSynchronizer(抽象的队列式的同步器)简称AQS,AQS 中有一个非常重要的变量 state(同步状态,也可以理解为资源),所有与同步相关的操作都是跟它有关的。它是用 volatile 修饰的,volatile 保证了内存可见性但并不能保证并发操作时的原子性,所以除了常规的get和set方法外还额外有一个 compareAndSetState()方法,这个方法最终调用了一个 Unsafe 类的本地CAS方法 compareAndSwapInt() 以保证操作的原子性。
1 | private volatile int state; |

