AQS原理

简介: AQS原理

AQS, AbstractQueuedSynchronizer ,抽象队列同步器,定义了一套多线程访问共享资源的同步器框 架,许多并发工具的实现都依赖于它,如常用的 ReentrantLock/Semaphore/CountDownLatch 。

AQS使用一个 volatile 的int类型的成员变量 state 来表示同步状态,通过CAS修改同步状态的值。当 线程调用 lock 方法时 ,如果 state =0,说明没有任何线程占有共享资源的锁,可以获得锁并将 state 加1。如果 state 不为0,则说明有线程目前正在使用共享变量,其他线程必须加入同步队列进行等待。

privatevolatileintstate;//共享变量,使用volatile修饰保证线程可见性

同步器依赖内部的同步队列(一个FIFO双向队列)来完成同步状态的管理,当前线程获取同步状态失败 时,同步器会将当前线程以及等待状态(独占或共享 )构造成为一个节点(Node)并将其加入同步队 列并进行自旋,当同步状态释放时,会把首节点中的后继节点对应的线程唤醒,使其再次尝试获取同步 状态。

image.png

相关文章
|
存储 运维 监控
NACOS 配置中心和注册中心是分两个集群部署还是放在一个集群中
【2月更文挑战第33天】NACOS 配置中心和注册中心是分两个集群部署还是放在一个集群中
431 3
|
Web App开发 JavaScript
Vue 项目中使用 debugger 在 chrome 谷歌浏览器中失效以及 console.log 指向去了 vue.js 代码
Vue 项目中使用 debugger 在 chrome 谷歌浏览器中失效以及 console.log 指向去了 vue.js 代码
1325 0
1.5w字,30图带你彻底掌握 AQS!(建议收藏)
AQS( AbstractQueuedSynchronizer )是一个用来构建锁和同步器(所谓同步,是指线程之间的通信、协作)的框架,Lock 包中的各种锁(如常见的 ReentrantLock, ReadWriteLock), concurrent它包中的各种同步器(如 CountDownLatch, Semaphore, CyclicBarrier)都是基于 AQS 来构建,所以理解 AQS 的实现原理至关重要,AQS 也是面试中区分候选人的常见考点,我们务必要掌握,本文将用循序渐进地介绍 AQS,相信大家看完一定有收获。文章目录如下
|
11月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
578 109
|
8月前
|
人工智能 自然语言处理 IDE
通义灵码使用体验
通义灵码2.0是阿里云推出的AI编码助手升级版,安装简便且兼容主流IDE。其行级和函数级实时续写功能准确,大幅减少编码时间。特色自然语言生成代码、单元测试及注释生成功能实用,提升代码质量和维护性。智能问答和异常排查功能出色,显著提高编程效率与代码稳定性,值得推荐。
282 0
|
存储 SQL 关系型数据库
MySQL 给数据表增加一列,一定会锁表吗?
【8月更文挑战第8天】在数据库管理和开发中,给数据表增加一列是一个常见的操作。然而,当面试官提出“MySQL 给数据表增加一列,一定会锁表吗?”这一问题时,答案并非绝对。这主要取决于MySQL的版本、存储引擎以及具体的操作方式。
664 0
|
缓存 NoSQL Java
Java高并发实战:利用线程池和Redis实现高效数据入库
Java高并发实战:利用线程池和Redis实现高效数据入库
878 0
|
数据采集 SQL 关系型数据库
在 MySQL 中使用 Union
【8月更文挑战第11天】
868 0
在 MySQL 中使用 Union
|
SQL 人工智能 分布式计算
MaxCompute 产品新能力发布-2024年Q1
随着阿里云MaxCompute4.0的产品新版本发布,越来越多的MaxCompute产品新能力被客户广泛关注,包括近实时查询/湖仓一体&开放架构/容灾备份等。在此我们对外整体介绍一下MaxCompute FY25-Q1产品新功能,帮助更多用户借此了解MaxCompute4.0云原生数仓新版本的重点产品特性,核心竞争力与典型用户场景等信息。
467 1
|
消息中间件 设计模式 安全
深入理解AQS队列同步器原理-从ReentrantLock的非公平独占锁实现来看AQS的原理
深入理解AQS队列同步器原理-从ReentrantLock的非公平独占锁实现来看AQS的原理