【搞定Java并发编程】第15篇:队列同步器AQS源码分析之概要分析

本文介绍了Java并发编程中队列同步器AQS的基础概念和核心功能,包括同步状态管理、同步队列的FIFO特性、独占模式与共享模式的实现,并提供了AQS源码分析的系列文章概览。
摘要由CSDN通过智能技术生成

AQS系列文章:

1、队列同步器AQS源码分析之概要分析

2、队列同步器AQS源码分析之独占模式

3、队列同步器AQS源码分析之共享模式

4、队列同步器AQS源码分析之Condition接口、等待队列

先推荐两篇不错的博文:

1、一行一行源码分析清楚AbstractQueuedSynchronizer

2、深入剖析基于并发AQS的(独占锁)重入锁(ReetrantLock)及其Condition实现原理


队列同步器 AbstractQueuedSynchronizer (简称:同步器、AQS),是用来构建锁或者其他同步组件的基础框架,它使用了一个 int 成员变量表示同步状态,通过内置的 FIFO 队列来完成资源获取线程的排队工作。

同步器从其名字就可以看出来它是一个抽象类。因此,同步器的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态。

同步状态的改变主要通过同步器提供的三个方法:getState()、setState(int  newState) compareAndSetState(int expect, int update)。

子类被推荐定义为自定义同步组件的静态内部类,同步器自身没有实现任何同步接口,它仅仅定义了若干同步状态获取和释放的方法来供自定义同步组件使用。

同步器既可以支持独占式地获取同步状态,也可以支持共享式地获取同步状态,这样就可以方便实现不同类型的同步组件(ReentrantReadWriteLock 和 CountDownLatch)。

  • 同步器与锁的关系:

同步器是实现锁的关键,在锁的实现中聚合同步器,利用同步器实现锁的语义。

可以这样理解二者的关系:锁是面向使用者的,它定义了使用者与锁交互的接口,隐藏了实现细节;而同步器面向的是锁的实现者,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待和唤醒等底层操作。锁和同步器很好地隔离了使用者和实现者所需要关注的领域。


1、队列同步器的接口与示例

同步器的设计是基于模板方法模式的,即使用者需要继承同步器并重写指定的方法,随后将同步器组合在自定义同步组件的实现中,并调用同步器提供的模板方法,而这些模板方法将调用使用者重写的方法。

同步器可重写的方法如下表所示:

同步器可重写的方法

同步器提供的模板方法如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值