深入理解AbstractQueuedSynchronizer(AQS)

https://www.jianshu.com/p/cc308d82cc71

这篇文章写的非常详细:

深入理解AbstractQueuedSynchronizer(AQS)_第1张图片

上图为AQS队列的示意图,从中可以反应出几个AQS的特点:

1.AQS所有节点都在等待中,并且在自璇状态。节点的获取策略是FIFO

2.AQS是一个双向链表,有两个指针,分别指向头节点和尾部节点

深入理解AbstractQueuedSynchronizer(AQS)_第2张图片

上图代表的是AQS队列的获取到锁的过程,其特点是:

1.首先获取的是头部节点,就是将头节点指针只向下一个节点然后激活线性执行。

独占锁获取的过程:

深入理解AbstractQueuedSynchronizer(AQS)_第3张图片

图非常经典,基本是整个过程。

超时情况获取去锁:

深入理解AbstractQueuedSynchronizer(AQS)_第4张图片

该图中少了锁获取的分支,但是反应了根据时间判断情况的下如何获取锁的过程。

其详细信息上文链接中。。。。。

 

你可能感兴趣的:(经验积累,AQS)