恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

AQS:原理、组成与锁机制解析

  • 首页
  • 资讯中心
  • /
  • AQS:原理、组成与锁机制解析

相关资讯

一文读懂Git 的底层原理:从 Commit 到 Blob 2026/8/18 19:34:33
langchain1.X学习笔记-22-中间件Middleware的常用内置中间件(一)SummarizationMiddleware和HumanInTheLoopMiddleware 2026/8/18 19:34:33
函数相关知识 2026/8/18 19:34:33

最新资讯

基于RAG与LLM的绿色雨水基础设施智能问答系统构建实践
轻量推理引擎如何观察线上运行状态
Python数据分析实战:从家庭用电数据到完整分析流程
异构智能体技能运行时重建:基于证据校准的跨语言能力迁移
智能体记忆管理:如何用事务性提交保障信念一致性
拿到陌生二进制文件不知从何下手?用免费十六进制编辑器 HexEdit 快速拆解

今日推荐

数据缺失处理:从MCAR、MAR到MNAR的机制解析与多重插补实践
MAGS-SLAM:多智能体协同3D高斯泼溅SLAM系统解析
LLM智能体记忆管理:基于关键词门控的混合激活机制CAMeR详解

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

AQS:原理、组成与锁机制解析

发布时间:2026/8/18 19:34:33
AQS:原理、组成与锁机制解析 1. 什么是AQS作用是什么AQSAbstractQueuedSynchronizerAQS是一个用于构建锁和同步器的抽象的线程同步框架用于解决线程阻塞和资源抢占的问题。2. AQS的组成包含哪些内容1.state同步状态用于记录资源的占用模式即记录资源在独占模式和共享模式下什么时候占用锁。2.CLH队列是一个虚拟双向队列用于存放暂时获取锁失败的线程每个在队列里等待的线程被封装成一个Node节点。3. AQS独占锁的获取流程先直接获抢锁第一次抢锁线程调用lock()方法首先通过CAS抢锁如果state为0则抢锁成功当前线程成功持锁如果state为1则表示锁已经被其他线程持有抢锁失败抢锁失败则进入acquire(int arg)方法。抢锁失败进入acqui()方法第二次抢锁一进入acquire(int arg)方法马上调用tryAcquire(arg) 方法再次进行抢锁tryAcquire(arg)里是用nonfairTryAcquire方法CAS快速进行抢锁。入队如果返回true则表示抢锁成功该线程成功持有锁若返回false则抢锁失败需要用addWaiter方法CAS自旋式将这个线程放入acquireQueued队列里。排队与阻塞这个线程放入acquireQueued队列里(1).首先如果在队列里是对头元素直接获取锁该线程成功持锁(2).若不是对头元素则判断其前驱是否为对头元素是则可以抢锁只有头节点的后继才有资格尝试获取锁直接调用tryAcquire方法抢锁如果抢锁成功则当前线程成功持锁(3).失败则线程阻塞看看前驱节点的状态是否为可以唤醒后继节点状态即SIGNAL-1如果是则等待被唤醒后得到抢锁资格继续抢锁如果不是即前驱节点异常即SIGNAL-1时重新通过CAS自旋抢锁直至抢到锁或者其前驱节点状态为SIGNAL-1。4. 共享模式和独占模式有什么区别多线程实现下独占模式某一个操作只能给一个线程进行线程A在进行时别的线程只能阻塞。state就是用来判断该操作是否在被线程进行。eg线程A想要执行某一操作若state0说明这个操作没有别的线程在执行该线程可以执行这个操作并且state会将0改成1此时state1若此时线程B也想进行这个操作但是state1则线程B就进行不了这个操作会被阻塞。共享模式某一个操作能够给多个线程执行线程A/B/C...等等只要在共享名额用户自己设置的内可以多线程一起操作。eg共享模式下需要限制线程共享名额不限制系统会崩溃用state来限制。首先先设置共享的数量n所以staten0线程A想要执行某一操作staten说明这个操作还没有别的线程在执行该线程可以执行这个操作并且state会数量减一来表示又有1个线程进行该操作共享名额减一所以state-1若此时线程B也想进行这个操作也是重复这个流程直至有某个线程想进行这个操作但是state0则表示共享名额为0已经不能再共享这个操作了这个线程就好被阻塞。5. AQS的公平锁和非公平锁有什么区别公平锁和非公平锁最大的区别在于在抢锁时是否排队。公平锁公平锁在线程抢锁时会遵循先进先出的排队原则排队只有队头元素可以拿到锁其余线程会被阻塞在外面需要等待唤醒后才能再次尝试获取锁。优点公平锁这样保证了每个线程都能拿到锁不会产生饥饿线程。缺点这样排队取锁的方式每个线程都会阻塞与唤醒性能消耗太大。非公平锁非公平锁在线程抢锁时先会插队抢锁即一上来就先直接抢锁不先排队如果刚刚好有锁空闲了可以直接强到并尺有锁若一上来插队抢锁不成功才会去排队。优点没有一上来就排队而是插队抢锁减少了阻塞和唤醒消耗的性能。缺点会存在饥饿线程的风险因为有可能插队抢锁多次成功导致在排队的线程一直拿不到锁。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号