当前位置: 首页 > news >正文

synchronized 锁升级的过程

在 Java 中,锁升级特指synchronized在 JDK 1.6 后引入的优化机制:锁状态从无锁逐步升级为偏向锁、轻量级锁、重量级锁,且升级方向是单向的(不可降级)。整个过程基于对象头中的 Mark Word 变化实现。


🔄 锁升级的四个阶段

锁状态适用场景核心行为Mark Word 内容(简略)
无锁对象刚创建,没有线程竞争初始状态哈希码、分代年龄、锁标志位01(未偏向)
偏向锁只有一个线程反复进入同步块记录线程 ID,后续该线程重入零开销线程ID + 偏向时间戳 + 标志位01(偏向)
轻量级锁少量线程交替持有锁,竞争不激烈自旋等待(CAS),避免阻塞指向栈中锁记录的指针 + 标志位00
重量级锁多个线程激烈竞争,自旋失败或超时线程阻塞,依赖操作系统 mutex指向监视器(Monitor)指针 + 标志位10

⚙️ 升级触发条件详解

  1. 无锁 → 偏向锁

    • 第一个线程进入synchronized块时,JVM 通过 CAS 将当前线程 ID 写入对象头。

    • 前提:JVM 开启了偏向锁(默认有延迟,可用-XX:BiasedLockingStartupDelay=0关闭延迟)。

  2. 偏向锁 → 轻量级锁

    • 当第二个线程尝试竞争该偏向锁时,偏向锁失效。

    • 在全局安全点(Safepoint)撤销偏向锁:

      • 若原持有锁的线程已退出,则对象头置为无锁,再升级为轻量级锁(CAS 竞争)。

      • 若原线程仍存活且持有锁,则直接膨胀为轻量级锁,原线程持有锁,新线程开始自旋。

  3. 轻量级锁 → 重量级锁

    • 自旋超过一定次数(JDK 1.6 后为自适应自旋,根据历史情况动态调整)。

    • 自旋过程中又有新的线程加入竞争。

    • 持有锁的线程耗时过长,自旋浪费 CPU。

    • 此时锁膨胀为重量级锁,未获得锁的线程全部进入阻塞状态(BLOCKED)。


📌 注意事项

  • 锁升级不可逆:一旦升级为重量级锁,即使后续无竞争也不会降级。

  • 偏向锁在 JDK 15 后默认禁用并废弃(高并发下撤销成本过高)。

  • 哈希码会影响锁升级:若对象已调用hashCode(),对象头中存储了哈希码,则无法进入偏向锁状态(直接轻量级锁)。

  • 批量重偏向:当大量对象发生偏向锁撤销时,JVM 会批量重偏向或批量撤销,避免频繁 Safepoint。


💡 一句话总结

无锁 → 偏向锁(单线程)→ 轻量级锁(自旋)→ 重量级锁(阻塞),全部通过 CAS 修改对象头 Mark Word 实现,目的是在低竞争时避免操作系统互斥量开销。

http://www.rkmt.cn/news/1535547.html

相关文章:

  • 大模型开源与闭源竞争格局
  • 2026年B2B系统选型避坑指南:哪些“伪智能”“假集成”功能要警惕?
  • 终极指南:使用EPPlus在.NET中实现Excel自动化处理
  • SketchToAppStore:高效生成App Store多尺寸截图的智能工具
  • 阜阳凯琪黄金回收2026黄金回收怎么选实体门店 上门回收流程与计价标准详解 - 润富黄金回收
  • Python特征选择实战:工业级四层决策工作流
  • 终极免费英雄联盟回放播放器:ROFLPlayer完整使用指南
  • 聊城市闲置爱马仕、劳力士变现指南:奢侈品手表包包回收门店实地测评 - 谊识预商贸
  • 微信投票在哪里弄?2026 深度测评:多款工具图片上传功能实测,云众评选优势突出 - 微信投票小程序
  • WikiQuiz语法规则详解:如何设计正则表达式提取数字、地点和专有名词
  • NoFences终极指南:免费开源的Windows桌面分区管理工具
  • 实战EDA操作手册:从数据认知到建模决策的四层穿透
  • 绵阳市奢侈品手表包包回收价格差距高达15%:实测对比告诉你哪家店报价最实在 - 谊识预商贸
  • AcFunDown:5步轻松实现A站视频离线保存的免费开源工具
  • Effective C++ 条款36:绝不重新定义继承而来的 non-virtual 函数
  • 【Kafka源码解读和使用指南】第85篇:Kafka监控系统搭建实战——Prometheus+Grafana+告警全套方案
  • Windows上运行iOS应用的终极秘籍:3步打造跨平台模拟环境
  • 安康市2026年奢侈品手表包包回收门店权威测评:这五家店铺回收价格最高 - 千叶啊
  • 特征方程:数据科学中被忽视的矩阵健康诊断仪
  • 软考软件设计师备考全攻略:从知识体系构建到实战案例分析
  • Equalizer APO终极指南:3步免费打造专业级音效系统
  • pearOS NiceCore 系统介绍与完整安装部署教程
  • 4个创新场景应用:一站式3D模型可视化解决方案深度实战
  • Effective C++ 条款37:绝不重新定义继承而来的缺省参数值
  • 3步解锁鼠标真实性能:免费开源测试工具完全指南
  • Mesh Navigation未来展望:3D导航技术发展趋势分析
  • 从意图驱动到AI自洽:构建下一代智能网络的核心架构与实践
  • 淮安市闲置爱马仕、劳力士变现指南:奢侈品手表包包回收门店实地测评 - 开始就结束
  • 计算机Java毕设实战-基于 Spring Cloud 的 B2C 电子商城系统研发与实践 分布式微服务架构下电商交易平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • ComfyUI-WanVideoWrapper:AI视频创作的创新工具箱与工作流优化指南