AQS怎么理解
AQS全称AbstractQueuedSynchronizer,是一个抽象类的缩写,在jdk的java.util.concurrent.locks包里面
语义可以理解为基于先进先出的队列结构的同步框架,队列是基于双向链表实现的。
AbstractQueuedSynchronizer抽象类主要是针对队列的操作和线程阻塞唤醒的操作,而针对锁的操作主要是基于抽象方法Lock、tryAcquire tryRelease等方法的实现。线程的阻塞唤醒用的是本地方法unsafe.park和unpark
锁机制基于一个状态值,它是原子值
这里面主要用到了cas(compare and set )对状态值进行原子操作。
基于qas的具体实现可以看ReentrantLock类
具体的代码分析可以看链接https://zhuanlan.zhihu.com/p/42800884
浙公网安备 33010602011771号