尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

java锁升级过程

java锁升级过程
📅 发布时间:2026/6/19 19:01:14

整体过程:无锁->偏向锁->轻量级锁->重量级锁
1.无锁:加锁对象被实例化,但还未有线程调用,此时对象头中的markword记录的是hashcode、锁标识等该对象的初始信息。
2.偏向锁:
2.1 初次获取:当线程A获取锁时,根据当前加锁对象锁标识进行不同的操作,如果是无锁,进行CAS将线程ID写入markword替换hashcode,写入成功,则表示线程获取锁成功,代码执行完毕释放锁后,也不会将markword内容恢复。
2.2 再次获取:线程A再次尝试获取,但markword内容已经被修改为线程ID,直接获取,不需要再进行set操作。
3.轻量级锁:
3.1 epoch不相等:该锁已经被A使用,且markword信息已被修改为A线程id,此时线程B来竞争锁,线程id没匹配上,但是该加锁对象的epoch和类的epoch也不相等,代表加锁对象不是最新版本,线程B可以CAS获取而不进行锁升级。
3.2 epoch相等:需要JVM介入,发生锁撤销(该加锁对象的markword被还原为无锁状态),在一个安全点(Stop The World)进行检查线程A是否完全释放资源,如果没有释放,升级为轻量级锁,jvm替A在栈上创建一条lockrecord,线程A执行结束后释放锁,线程B通过CAS来竞争锁;如果释放了,则线程B在栈创建lockrecord,通过CAS将这条lockrecord写入到加锁对象的markword中,同时将无锁的markword信息记录到lockrecord的displaced markword中,还把加锁对象的引用也存到了lockrecord中(用于释放锁时还原无锁状态)。
3.3 批量重偏向:假设一个类有100个加锁对象,JVM会记录这100个对象发生锁撤销的次数,当达到阈值时(20),使类的epoch+1(版本更新了,属于线程A的加锁对象是老版本),导致类的epoch和加锁对象的epoch不相等,这样线程B依然通过一次CAS就获取到了加锁对象,而不用再等升级成轻量级锁。(达到阈值的20个已经升级成轻量级锁不可逆,剩余的80个因epoch更新而直接CAS继续维持偏向锁状态)。
4.重量级锁:线程B尝试CAS获取被线程A持有的加锁对象,没成功,发生自旋(while true里一直CAS),当自旋达到阈值后,升级成重量级锁,引入monitor资源监视器,上升到了操作系统级别,线程B进入阻塞状态进入等待池,等线程A释放资源后唤醒线程B。
4.1 锁池:自旋失败后,进入锁池等待锁释放,等待被唤醒,锁池内线程优先级比等待池要高。
4.2 等待池:线程A持有锁,但是需要等其他线程的资源,所以调用wait()使其释放锁(sleep()方法不会释放锁!),由于在JVM看来是主动释放锁,优先级在锁池之后。

相关新闻

  • GAS_Aura-Setting Up Click to Move
  • 【刷题笔记】cf808f
  • C# 操作 DXF 文件指南

最新新闻

  • 覆盖上海近郊全域网点,2026 黄金回收城郊门店综合参考榜单 - 奢侈品回收测评
  • 技术深度解析:Win11Debloat如何实现Windows系统优化与隐私保护架构
  • Marketch插件:3步实现Sketch设计稿到HTML代码的智能转换
  • 阿贝云免费云服务器,入门开发者的低成本选择!
  • 5分钟彻底掌握PC版微信QQ防撤回技巧:告别“消息已撤回“的烦恼
  • iStoreOS下Home Assistant容器化部署HACS商店全攻略

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号