一、AbstractQueuedSynchronizer
队列同步器AbstractQueuedSynchronizer(简称同步器),是用来构建锁或其他同步组件的基础框架,通过内置的FIFO队列来完成获取线程的排队工作,AQS主要利用硬件原语指令(CAS compare-and-swap),来实现轻量级多线程同步机制,并且不会引起CPU上文切换和调度,同时提供内存可见性和原子化更新保证(线程安全的三要素:原子性、可见性、顺序性)。
二、AQS和synchronized两者的区别
(1)synchronized 是 JVM 实现的,而 AQS 是 JDK 实现的
(2)synchronized 中的锁是非公平的,AQS 默认情况下也是非公平的,但是也可以是公平的。
(3)synchronized比较简单,AQS需要lock()和unlock()来实现,较为复杂
三、CAS介绍
参考:https://blog.csdn.net/lizongxiao/article/details/107472047