高并发(15)-AQS

前言

上篇文章讲解了CLH队列锁,今天讲讲AQS

什么是AQS

AQS(AbstractQueuedSynchronizer),它是一个队列同步器,是java并发用来构建锁的基础框架。算是线程之间同步的规范。它实现了一个FIFO(FirstIn、FisrtOut先进先出)的队列。底层实现的数据结构是一个双向链表。

AQS的实现方式

AQS是一个抽象类,使用方式则是主要使用继承。子类通过继承AQS并且实现抽象方法来管理。AQS本身没有实现任何同步接口,而是是用模版模式,定义了同步状态与获取锁和释放锁的方法。

AQS原理

AQS内部维护了一个CLH队列来管理锁,有个state属性,通过state属性来标识锁状态,如下图所示,需要锁的就去尝试获得锁,检测state的状态,如果没有获取到锁,就封装成一个node节点加入到队列中。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章