关于ReentrantLock的误区(看源码时发现的)

简介: 公平锁并不是绝对的公平,所谓的公平是针对clh队列内外的线程而言,当持有锁线程释放锁后,队列内部线程都会被唤醒去抢夺锁,我猜测(看了很久源码没找到答案,所以是猜测)AQS是根据队列位置来唤醒,所以头部节点对应线程获取锁概率更大

写在前面:


关于ReentrantLock这里不作过多解释,这篇博客两个目的,一是就我目前对ReentrantLock的理解,给大家指出一个很常见的误区;二来是探讨和求知,此篇博客观点纯是靠源码看来的,本人能力有限,对AQS作者想表达的意思理解可能不到位或者有偏差,希望有大佬看到后帮我指出,一定要指出,感谢


83cd25bd3c5c418cb7399e23695df0f5.png

正题开始


总所周知,ReentrantLock可以实现公平锁和非公平锁,我今天想说的是它的公平锁


老规矩,先抛问题:

1、怎么定义公平?

2、对谁公平?

误区:

先来举个栗子


五个线程ABCDE一起抢夺锁资源,假设A抢到了锁,BC没抢到但是先后进入了clh队列,DE没抢到也没进入clh队列,当A释放锁后,哪些线程会去抢夺锁资源?


想了很久,这个例子能很好地帮助理解公平锁


正常来讲,很多小伙伴会认为排在clh队列头部的线程B会拿到锁(我之前也是这么认为)


其实不然,在我看来已经入队的BC都有机会拿到锁,相对而言,B拿到锁的几率更大,先别喷我,等我上证据


下面是AQS源码注释,Lea大爷写的明明白白清清楚楚

b3ee931f8a1249bab21eb643565b3997.png

贴心的帮大家翻译:

71c4fcbbf151468695dafb71fedbddc4.png


所以,小结:


公平锁并不是绝对的公平,所谓的公平是针对clh队列内外的线程而言,当持有锁线程释放锁后,队列内部线程都会被唤醒去抢夺锁,我猜测(看了很久源码没找到答案,所以是猜测)AQS是根据队列位置来唤醒,所以头部节点对应线程获取锁概率更大


补充(重要):

后面又翻了下源码,发现是自己想多了,下个头节点确实不一定能拿到锁,但那是节点已取消或为null时才会发生,aqs解锁逻辑是依次唤醒后继节点,直到找到第一个没被取消且不为null的节点

7c0dc87faff444ea959055b3551c6cb2.png


以上


关于什么是公平锁,我已经疑惑了很久很久,这就是很多小伙伴让我写关于ReentrantLock底层原理分析文章我迟迟不写的原因,我自己还没搞懂呢;


最后


从文档、源码都找不到能很好支撑本人上述观点的依据(本来人也菜,找不到很正常),希望路过的大佬们能指出我的问题,并给出理由,感谢!


相关文章
|
监控 架构师 Java
JVM 11 调优指南:如何进行JVM调优,JVM调优参数
JVM 11的优化指南:如何进行JVM调优,以及JVM调优参数有哪些”这篇文章将包含JVM 11调优的核心概念、重要性、调优参数,并提供12个实用的代码示例,每个示例都会结合JVM调优参数和Java代码
799 2
|
7天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2146 12
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
7天前
|
云安全 人工智能 安全
|
7天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max-Preview深度全解析:2.4万亿参数旗舰MoE模型+Token Plan限时优惠完整落地指南
2026年7月,全新旗舰级混合专家大模型Qwen3.8-Max-Preview正式开放抢先体验,作为通义千问Qwen3系列规格最高、综合推理能力顶尖的新一代模型,该模型总参数量达到2.4万亿(2.4T),是当前线上可调用的原生多模态旗舰模型,综合推理水准对标海外顶级Fable 5模型,在复杂工程开发、长文档深度分析、多步骤智能体自治、跨境多语言创作、海量数据挖掘五大高难度业务场景实现跨越式性能提升。
941 1
|
9天前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
964 40
|
7天前
|
人工智能 自然语言处理 数据挖掘
最新版通义千问(Qwen3.8-Max-Preview)功能介绍
2026年,通义千问正式推出全新旗舰级大模型 **Qwen3.8-Max-Preview 预览版**,作为首款突破万亿参数规格的新一代基座模型,该模型总参数量达到**2.4万亿**,采用全新迭代的MoE混合专家架构,综合推理性能、长文本处理、多模态理解、复杂任务规划能力全面超越前代Qwen3.7-Max版本,整体实力跻身全球第一梯队,可对标海外顶级旗舰模型,是当前面向复杂工程开发、多智能体协同、超长文档解析、专业办公自动化场景的最优国产基座模型。
952 0
|
6天前
|
自然语言处理 测试技术 API
通义千问Qwen3.8-Max-Preview全功能解析:2.4万亿参数旗舰模型深度使用指南
在大模型技术持续迭代的当下,通义千问推出的Qwen3.8-Max-Preview作为新一代旗舰预览版模型,凭借2.4万亿参数的超大规模、多模态融合能力与全场景适配特性,成为开发者与企业用户探索AI应用的核心工具。该模型采用稀疏混合专家(MoE)架构,是通义千问首个突破万亿参数的多模态模型,可同时处理文本、图像、视频与文档等多种数据形态,在全栈代码开发、复杂逻辑推理、长文档分析与多智能体协作等场景实现跨越式升级。本文将全面拆解Qwen3.8-Max-Preview的核心功能,详解API调用流程与配置方法,覆盖多场景实战技巧,帮助用户快速掌握这款旗舰模型的使用方法,充分释放其性能潜力。
463 1