聊聊AQS和Monitor的那些相似与不同
最近在整理Java并发知识的时候突然发现AQS和Monitor这两套锁机制在设计上有着惊人的相似性。准确地说它们都用了双队列的思路来处理锁的竞争和等待但具体实现上又各有各的玩法。队列的对应关系先上一张对照表看看它们是怎么一对一的synchronized / MonitorAQS / ReentrantLock_owner当前持锁线程state exclusiveOwnerThread_EntryList抢锁失败的线程sync queue_WaitSet调用wait()后挂起的线程Condition queue_Monitor里的_EntryList大致对应AQS的同步队列sync queue。当线程抢锁失败后就会被扔进这个队列里等着。_Monitor里的_WaitSet则对应AQS的条件队列Condition queue。线程已经拿到过锁了但因为某个条件不满足主动调用wait()挂起就待在这里。所以从功能分工来看它们简直就是一个模子里刻出来的抢锁失败 → 进竞争队列排队条件不满足主动等待 → 进条件队列等通知被唤醒后 → 再滚回竞争队列重新抢这大概就是英雄所见略同吧。状态那些事很多人容易把BLOCKED和WAITING搞混包括我之前也是。 后来想了一个简单的判断方法看它在等什么。BLOCKED等的是进入synchronized的机会通俗点说就是卡在锁门口进不去WAITING等的是某个事件发生比如别人notify()、unpark()、或者join()结束有意思的是AQS同步队列里的线程虽然本质上也在等锁但线程状态通常不是BLOCKED而是WAITING。这是为什么因为AQS不是靠monitor enter卡在对象锁门口它是靠CAS尝试拿锁失败后入队LockSupport.park()挂起而park()挂起出来的线程状态大家都懂通常是WAITING或TIMED_WAITING。这就和synchronized那种直接BLOCKED的方式不一样了。总结一下队列含义常见状态Monitor.EntryList等进入synchronizedBLOCKEDMonitor.WaitSet已拿锁调用wait()等待条件WAITING / TIMED_WAITINGAQS sync queuelock()失败后排队等锁WAITING / TIMED_WAITINGAQS condition queueawait()后等待条件WAITING / TIMED_WAITING说白了它们都是双队列的设计思路但Monitor更底层、更重量级AQS则提供了更好的封装和扩展性。理解了这个对应关系再去看ReentrantLock、CountDownLatch这些AQS的实现类就会清晰很多。本来是想分开整理的结果写着写着发现它们居然这么像看来并发编程里很多看似不同的东西底层逻辑都是相通的。

相关新闻

海岛风电储能物联网远程监控系统方案

海岛风电储能物联网远程监控系统方案

海岛风能资源丰富,风速高、湍流小、可利用小时数长,就地取能、零燃料成本的优势,使其成为远离大陆电网海岛实现能源自主的最优选择,同时适配边防、海岛旅游、渔业养殖等场景的综合电力需求。目前,传统监控模式已无法满…

2026/5/17 9:27:39 阅读更多 →
百姓生殖健康研究广州中心,隶属于家安集团,专业守护女性健康!

百姓生殖健康研究广州中心,隶属于家安集团,专业守护女性健康!

在大健康产业蓬勃发展的今天,女性生殖健康作为民生福祉的重要一环,正受到越来越多的关注。而在这一领域深耕多年的百姓生殖健康研究广州中心,正是隶属于实力雄厚的广东家安健康科技集团有限公司,以专业力量为女性健康保驾护航。 &…

2026/7/5 9:57:11 阅读更多 →
看完就会:更贴合本科生的降AIGC平台,千笔·降AIGC助手 VS PaperRed

看完就会:更贴合本科生的降AIGC平台,千笔·降AIGC助手 VS PaperRed

在AI技术迅速发展的今天,越来越多的本科生开始借助AI工具辅助论文写作,以提升效率和内容质量。然而,随着各大查重系统对AI生成内容的识别能力不断提升,论文中的“AI痕迹”问题愈发凸显。一旦AI率过高,不仅会影响查重结…

2026/7/2 21:03:32 阅读更多 →

最新新闻

终极Nucleus Co-Op分屏教程:一台电脑实现四人联机的完整指南

终极Nucleus Co-Op分屏教程:一台电脑实现四人联机的完整指南

终极Nucleus Co-Op分屏教程:一台电脑实现四人联机的完整指南 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾想过,…

2026/7/5 9:59:03 阅读更多 →
GPT-4o与GPT-4本质差异:多模态对齐与端到端延迟的工程选型指南

GPT-4o与GPT-4本质差异:多模态对齐与端到端延迟的工程选型指南

1. 这不是参数表对比,而是真实场景下的能力分水岭“GPT-4o和GPT-4有什么区别?”——这个问题我每天在技术群、产品会、客户咨询里至少看到17次。但绝大多数人点开的所谓“对比文章”,只是把OpenAI官网那张模糊的性能雷达图截图下来&#xff0…

2026/7/5 9:57:02 阅读更多 →
Unity游戏汉化神器:XUnity Auto Translator 5分钟快速入门指南

Unity游戏汉化神器:XUnity Auto Translator 5分钟快速入门指南

Unity游戏汉化神器:XUnity Auto Translator 5分钟快速入门指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因语言障碍而错失精彩的Unity游戏体验?面对日语、英语或其他…

2026/7/5 9:57:02 阅读更多 →
Seraphine:英雄联盟智能助手完整指南,轻松提升你的游戏体验

Seraphine:英雄联盟智能助手完整指南,轻松提升你的游戏体验

Seraphine:英雄联盟智能助手完整指南,轻松提升你的游戏体验 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾经在英雄联盟排位赛中因为错过接受对局而懊恼不已?是否…

2026/7/5 9:55:02 阅读更多 →
Grok模型在中国大陆可用吗?合规大模型接入指南

Grok模型在中国大陆可用吗?合规大模型接入指南

我不能提供与Grok或SuperGrok相关的注册、订阅或升级教程。 原因如下: Grok系列模型(Grok-1、Grok-2、Grok-3等)由埃隆马斯克旗下公司xAI开发, 未向中国大陆地区开放公开注册、API接入或用户订阅服务 。截至目前(2…

2026/7/5 9:55:02 阅读更多 →
从LLM到AI Agent:OpenAI合并ChatGPT与Codex的技术解析与实战指南

从LLM到AI Agent:OpenAI合并ChatGPT与Codex的技术解析与实战指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你还在把 ChatGPT 当作一个“更聪明的聊天机器人”,那么你可能已经落后了。最近,OpenAI 内部的一则重磅消…

2026/7/5 9:53:02 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻