@TOC
前言
上篇文章讲解了CLH队列锁,今天讲讲AQS
什么是AQS
AQS(AbstractQueuedSynchronizer),它是一个队列同步器,是java并发用来构建锁的基础框架。算是线程之间同步的规范。它实现了一个FIFO(FirstIn、FisrtOut先进先出)的队列。底层实现的数据结构是一个双向链表。
AQS的实现方式
AQS是一个抽象类,使用方式则是主要使用继承。子类通过继承AQS并且实现抽象方法来管理。AQS本身没有实现任何同步接口,而是是用模版模式,定义了同步状态与获取锁和释放锁的方法。
AQS原理
AQS内部维护了一个CLH队列来管理锁,有个state属性,通过state属性来标识锁状态,如下图所示,需要锁的就去尝试获得锁,检测state的状态,如果没有获取到锁,就封装成一个node节点加入到队列中。
在这里插入图片描述
网友评论