【多线程】AQS详解

news/2025/3/9 12:08:58/文章来源:https://www.cnblogs.com/cmxb/p/18756031

AQS是什么

AbstractQueuedSynchronizer是一个抽象的队列同步器,AQS利用模板方法模式解决了开发者在实现同步器时的复杂问题,提供了一个通用的加锁解锁框架。

AQS执行原理

AQS为实现的同步器提供了通用的执行框架,定义了对资源state的获取和释放流程。AQS核心思想是在CLH锁的基础上进行优化的

CLH锁

自旋:线程节点循环查询prev节点状态
单向队列:后面节点主动查询前节点状态

CLH锁 是一种是基于逻辑队列非线程饥饿的一种自旋公平锁,由 Craig、Landin 和 Hagersten三位大佬的发明,因此命名为CLH锁。
在并发情况下,多个线程在对共享资源进行请求时,发现资源已被占用,则会将请求锁的线程构造成一个单向队列中的节点;每一个线程节点通过自旋的形式访问前一个节点的状态,只有前节点锁释放后,当前节点才能获取锁。

存在的问题:长时间的自旋消耗CPU过大,会导致性能问题。

  • 节点示意图
    image
  • 执行逻辑
    image

AQS的实现

AQS在CLH的基础上进行了优化,使得对资源的占用,以及CPU的消耗降低

  • 自旋+阻塞:因为大量的自旋占用资源较多,所以AQS在构造节点后,对线程进行阻塞等待唤醒

    • AQS加锁:在并发请求共享资源时,判断头结点是否为空,
      • 为空则将当前线程构造为头结点,添加到队列中,继续向下执行;
      • 如果不是头结点,添加到队列中,并且阻塞,等待唤醒。
    • AQS解锁:获取头节点信息,更改节点状态值,唤醒next节点线程
  • 双向队列:AQS队列节点是一个具有 prev next两个属性的节点

  • 加锁流程
    image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/895079.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 8 AOT

AOT是个防止反编译的好办法 都来看看怎么用吧~ 1.需要安装C++的桌面开发2.新建项目,选择控制台3.确认 <PublishAot>true</PublishAot> 是否为true4.发布release版本优点: 1. AOT 会生成一个自包含的应用程序,并且已提前 (AOT) 编译为本机代码。原生 AOT 应…

京准电钟:GPS北斗时间服务器的作用与应用

京准电钟:GPS北斗时间服务器的作用与应用京准电钟:GPS北斗时间服务器的作用与应用 京准电钟:GPS北斗时间服务器的作用与应用 京准电钟官微——ahjzsz GPS北斗时间服务器是一种利用全球卫星导航系统(GPS为美国系统,北斗为中国系统)提供高精度时间同步服务的设备,其核心作…

制造未来:大型车厂焊接站从PROFIBUS跃迁至PROFINET引爆智能革命

某大型生产现场焊接站的协议改造PROFIBUS从转PROFINET从网关一、背景介绍 某大型汽车制造厂拥有多个生产线,用于车身焊接、喷涂及装配等工序。其中,一条关键的焊接生产线长期采用PROFIBUS协议进行数据传输和设备控制。随着生产自动化程度的提升和工业4.0战略的推进,厂方决定…

信创数据库在金融行业的五大应用场景

信创产业作为国家信息技术创新发展的重要支撑,近年来取得了显著进展。其中,信创数据库在金融行业的应用日益广泛,为金融机构的数字化转型和安全稳定运行提供了有力保障。信创数据库凭借其自主可控、安全可靠等优势,在金融行业多个关键领域发挥着重要作用,不仅提升了金融机…

信创国产化适配方案在金融行业的应用实践

信创国产化适配方案在金融行业的应用实践 随着信息技术的飞速发展,金融行业对信息技术的依赖程度日益加深。在当前复杂的国际形势下,实现信息技术的自主可控成为金融行业发展的重要战略方向。信创国产化适配方案应运而生,旨在通过采用国产信息技术产品和解决方案,降低对国外…

纷享销客vs销售易:制造行业CRM选型深度解析

在当今竞争激烈的制造行业中,企业对于客户关系管理(CRM)系统的需求日益增强,高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在众多CRM解决方案中,纷享销客凭借其卓越的功能性、高度的定制化能力以及出色的市场表现脱颖而出,成为众多中大型企业首选的C…

uniapp-ios苹果微信支付配置问题一直报错

贴出错误:{"errMsg": "requestPayment:fail 无效的参数,https://ask.dcloud.net.cn/article/282","code": -1 } 前端:支付代码没有任何问题(仔细排查每一行,甚至怀疑orderInfo里面配置大小写问题)uni.requestPayment({provider: currentPayType…

AI与.NET技术实操系列(四):使用Semantic Kernel和DeepSeek构建AI应用

引言 在人工智能技术飞速发展的今天,大型语言模型(Large Language Models, LLMs)已成为智能应用开发的核心驱动力。从智能客服到自动化内容生成,LLMs的应用正在深刻改变我们的工作和生活方式。 对于.NET开发者而言,掌握如何将LLMs集成到应用程序中,不仅是一项技术挑战,更…

CH9121替换注意事项

CH9121A 基于前版CH9121(无后缀字母)升级,引脚基本兼容,替换时需调整外围电路。升级内容:精简供电方式由3.3&1.8v双电源供电改为3.3v单电源供电;I/O 口支持3.3V、2.5V、1.8V 供电,兼容多种电压标准的单片机;串口波特率支持300bps~10Mbps提供LED 状态显示Link 和AC…

飞书登录流程

不积跬步,无以至千里;不积小流,无以成江海。

Web基础

基础知识和工具 基础知识X-Forwarded-For:非常弱智的题才会有。工具GitHack:用来恢复.git文件 dirsearch:很强的crawl fastcoll:md5碰撞 AntSword:一句话木马GET连接PHP特性 精度 单精度23位尾数=\(\log_{10}2*23≈7\)位 双精度52位尾数=\(\log_{10}2*52≈16\)位 md50e开头…

35.2K star!双链笔记+知识图谱+本地优先,这款开源知识管理神器绝了!

一款融合「双链笔记+知识图谱+本地优先」理念的开源知识管理工具,支持Markdown/Org-mode双格式,打造你的第二大脑!🔥 一款融合「双链笔记+知识图谱+本地优先」理念的开源知识管理工具,支持Markdown/Org-mode双格式,打造你的第二大脑!项目介绍"Logseq 是一个注重隐…