当前位置: 首页 > 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.jsqmd.com/news/1023681/

相关文章:

  • 2026年B2B系统选型避坑指南:哪些“伪智能”“假集成”功能要警惕?
  • 2026大模型技术速成:小白也能轻松掌握的面试核心要点(收藏版)
  • 荆门市2026年奢侈品手表包包回收门店权威测评:这五家店铺回收价格最高 - 谊识预商贸
  • 终极指南:使用EPPlus在.NET中实现Excel自动化处理
  • 3步搞定跨平台资源下载:res-downloader一站式解决方案指南
  • 儋州市奢侈品回收门店红黑榜:综合实力最强的五家店铺推荐 - 千叶啊
  • 互信息实战指南:破解非线性特征筛选难题
  • Ubuntu 18.04深度学习驱动安装避坑指南:NVIDIA驱动与CUDA兼容性实战
  • m4s-converter:B站缓存视频永久保存解决方案
  • 阜阳凯琪黄金回收2026黄金回收怎么选实体门店 上门回收流程与计价标准详解 - 润富黄金回收
  • 2026年AI编程工具选型指南:团队协作与规范落地的实战标准
  • SketchToAppStore:高效生成App Store多尺寸截图的智能工具
  • 嘉峪关市闲置爱马仕、劳力士变现指南:奢侈品手表包包回收门店实地测评 - 干豆腐啊
  • 荆州市闲置爱马仕、劳力士变现指南:奢侈品手表包包回收门店实地测评 - 谊识预商贸
  • 为什么添加索引后会提升数据库查询效率
  • 吕梁市2026年奢侈品手表包包回收门店权威测评:这五家店铺回收价格最高 - 干豆腐啊
  • 面试官问“设计一个敲击计数器”,90%的人写得出来,却想不明白它背后的系统设计哲学
  • 视频生成新范式:基于光流与相位扰动的信号层重建
  • 2026年Claude Code CLI终端部署排障手册:npm安装与命令不可用问题全解
  • Ubuntu系统裸机还原实战:用Clonezilla实现5分钟极速恢复
  • 克拉玛依市奢侈品手表包包回收价格差距高达15%:实测对比告诉你哪家店报价最实在 - 千叶啊
  • Python特征选择实战:工业级四层决策工作流
  • 陕西建筑物拆除行业实力排行:城市更新浪潮下的硬核力量 - 深度智识库
  • 如何用3分钟免费获取完整的原神账号数据分析报告
  • ARIMA与GARCH模型原理及金融时间序列建模基础
  • 商洛市奢侈品回收门店红黑榜:综合实力最强的五家店铺推荐 - 干豆腐啊
  • Jupyter+Voilà+LiteLLM:非程序员可用的本地化Code Interpreter替代方案
  • Ubuntu系统安装深度指南:UEFI、LVM与安全基线实战
  • 京东商品库存监控与自动下单工具:jd-happy 完全指南
  • 聊城市闲置爱马仕、劳力士变现指南:奢侈品手表包包回收门店实地测评 - 谊识预商贸