java并发编程 10:AQS

news/2024/11/29 6:40:18/

目录

  • 什么是AQS
  • 原理

什么是AQS

juc包的结构如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZlrXs1em-1689247459660)(./imgs/10-1.png)]

AQS就是AbstractQueuedSynchronizer,是个抽象类,实现了自己的一些方法。它是阻塞式锁和相关的同步器工具的框架。很多并发类都是基于它实现的,如:ReentrantLock、CountDownLatch、Semaphore、ReadWriteLock,CyclicBarrier。

AQS的设计是基于模板方法模式的,也就是说,使用者需要继承同步器并重写指定的方法,随后将同步器组合在自定义同步组件的实现中,并调用同步器提供的模板方法,而这些模板方法将会调用使用者重写的方法,这样就大大降低了实现一个可靠自定义同步组件的门槛。

子类主要实现以下抽象方法:

  • tryAcquire:独占方式获取锁
  • tryRelease:独占方式释放锁
  • tryAcquireShared:共享方式获取锁
  • tryReleaseShared:共享方式释放锁
  • isHeldExclusively:该线程是否正在独占资源

原理

  1. 状态管理

AQS内部通过一个整型变量来表示同步状态,用于标识资源是否被占用或者线程是否可以获取资源。通常情况下,状态为0表示资源未被占用,大于0表示资源已被占用,小于0表示资源已被占用且有等待线程。

  1. 队列管理

AQS使用一个FIFO队列来管理等待获取资源的线程。AQS提供了一些方法(如enq、addWaiter和unparkSuccessor)来操作队列。

当前线程获取同步状态失败时,同步器会将当前线程以及等待状态等信息构造成为一个节点(Node)并将其加入同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点中的线程唤醒,使其再次尝试获取同步状态。节点(Node)用来保存获取同步状态失败的线程引用、等待状态以及前驱和后继节点。同步队列的基本结构如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zVSC1c62-1689247459661)(./imgs/10-2.png)]

  1. acquire方法

acquire方法是AQS的核心方法之一,用于实现线程对资源的获取。当线程调用acquire方法时,AQS首先会通过尝试CAS(Compare and Set)操作来竞争资源。如果成功获取资源,则线程可以继续执行;否则,线程将被加入到等待队列中,进入阻塞状态,直到资源被释放。

  1. release方法

    release方法是AQS的另一个核心方法,用于实现线程对资源的释放。当线程调用release方法时,AQS会先将同步状态更新为0,然后尝试唤醒等待队列中的其他线程,使它们有机会重新竞争资源。

  2. 共享模式和独占模式

    AQS支持两种同步模式:独占模式和共享模式。独占模式表示同一时间只能有一个线程持有资源,而共享模式则允许多个线程同时持有资源。AQS提供了对应的acquire和release方法来支持这两种模式,并且可以在不同的同步器中灵活地选择使用。


http://www.ppmy.cn/news/859784.html

相关文章

家用机器人扫机外毛刷_家用扫地机毛刷的选择技巧

对于家用清洁工具,相信大多数人熟悉的依然是传统的扫把拖把,或是吸尘器,但今天我们要介绍的是扫地机。扫地机拥有吸尘器无法比拟的优势,而扫地机的清洁主力主要源于毛刷。所以,今 对于家用清洁工具,相信大多…

吸尘器要抢空气净化器饭碗啦?看吸尘器如何玩转空气净化!

近日外国的一项新发明,吸尘器不仅可以吸尘,还能净化空气。 近日,外国的一位名叫Nicole Assini的设计师,发明了一款超越传统的多功能吸尘器,除了市面上吸尘器的普遍功能之外,还新增了迷你空气净化器的功能。…

家用机器人吸尘器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

本文研究全球与中国市场家用机器人吸尘器的发展现状及未来发展趋势,分别从生产和消费的角度分析家用机器人吸尘器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国…

esp01s改造老旧吸尘器连入天猫精灵语音控制(blinker + 阿里云)

esp01s改造老旧吸尘器连入天猫精灵语音控制 esp01s改造老旧吸尘器连入天猫精灵语音控制 利用esp01s加红外遥控二极管,实现天猫精灵语音控制扫地机(科沃斯CEN540)启动、回充 1、用到的元器件 esp01s模块红外led灯NPN三极管s8050&#xff0c…

word转换为html代码,word转换为Html工具

word转换为Html工具是文本处理频道下深受用户喜爱的软件,太平洋下载中心提供word转换为Html工具官方下载。 word转换为Html工具官方版是一个功能强大的Word格式转换为HTML格式工具,word转换为Html工具官方版可以将MS Word文档存为HTML网页的工具软件.&am…

word转换html的软件,word转换为Html工具(Word Cleaner)

word转HTML转换器(Word Cleaner)将MS Word文档存为HTML网页的工具软件. 虽然 Microsfot Word 也能将 .DOC 文件另存为WEB页面格式, 但是它会增加许多“垃圾”代码,这个小工具能够为你自动去除这些“垃圾”代码。 最简单的方法来转换Word文件到干净漂亮的HTML 功能特…

word cleaner(word转html)5.2.1,Word Cleaner(word转html)

Word Cleaner 将 MS Word 文档存为 HTML 网页的工具软件. 虽然 Microsfot Word 也能将 .DOC 文件另存为WEB页面格式, 但是它会增加许多“垃圾”代码,这个小工具能够为你自动去除这些“垃圾”代码。 最简单的方法来转换Word文件到干净漂亮的HTML 单词清洁剂的完美工具…

word转换html 批量,Word批量转HTML工具

这是Word批量转HTML工具,可以搜索硬盘上的doc文件并批量转换成html的工具 。 软件介绍 word转HTML转换器(Word Cleaner)将MS Word文档存为HTML网页的工具软件. 虽然 Microsfot Word 也能将 .DOC 文件另存为WEB页面格式, 但是它会增加许多“垃圾”代码&am…