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

posted @ 2021-11-17 23:10  whltw  阅读(86)  评论(0)    收藏  举报