AQS原理

AQS(AbstractQueuedSynchronizer)主要用于对资源状的态管理及等待队列的调度。资源的状态可分为:空闲、独占、共享3种;锁竞争模式可分为:公平锁和非公平锁2种。
其核心思想为:请求成功则修改资源的锁定状态,请求失败则放入等待队列等候调度。

当资源为空闲时状态时的处理比较简单,可被直接直接获取并修改状态;
当资源为共享时状态时,要根据共享条件(如共享数量上限等)判定是否可获取资源,如果失败则根据锁模式进行尝试或者进入等待;
当资源为独占时,直接根据锁模式进行尝试或者进入等待;

不同锁模式下的竞争:
非公平锁:先尝试请求一定次数,失败后放入等待队列;
公平锁:如果等待队列为空,先尝试请求一定次数,失败后放入等待队列;否则直接放入等待队列;

当资源使用完成后,需要释放对应的锁状态,以便等待队列或新建请求获取资源。AQS一般只需实现独占或共享中的一种模式。

2022-05-15

你可能感兴趣的:(AQS原理)