初窥AbstractQueuedSynchronizer(未完待

2019-06-24  本文已影响0人  lhsjohn
前言:AQS是J.U.C提供给我们的核心基础组件,可以用它来构建锁和其他装置的基础框架,今天并不是对AQS进行深入的分析,只是从大体上对它有一个初步的认识,更加详细的分析会在后面的文章中不定时更新。

首先看一下AQS中的主要的数据结构

AQS.png

简单概括一下AQS的几个特性

AQS实现的大体思路(重点)

首先AQS维护了一个CLH队列来管理锁,线程会尝试获取锁,如果失败了,就将当前线程以及等待状态等信息包成一个NODE节点,加入到同步队列SyncQueue中,之后会不断循环尝试获取锁,条件是当前节点为head的直接后继才会尝试,如果失败就会阻塞自己直到自己被唤醒,而当持有锁的线程释放锁的时候,才会释放队列中阻塞的线程。

AQS的同步组件(后面会对具体的组件进行详细分析)

上一篇 下一篇

猜你喜欢

热点阅读