千家信息网

Java轻量级锁比重量级锁快吗

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,今天小编给大家分享一下Java轻量级锁比重量级锁快吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起
千家信息网最后更新 2026年10月31日Java轻量级锁比重量级锁快吗

今天小编给大家分享一下Java轻量级锁比重量级锁快吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

锁概念

轻量级锁是 JDK 1.6 新增的概念,是相对于传统的重量级锁而已的一种状态,在 JDK 1.5 时,synchronized 是需要通过操作系统自身的互斥量(mutex lock)来实现,然而这种实现方式需要通过用户态与和核心态的切换来实现,但这个切换的过程会带来很大的性能开销,所以在 JDK 1.6 就引入了轻量级锁来避免此问题的发生。

轻量级锁执行过程

再讲轻量级锁执行过程之前,要先从虚拟机的对象头开始说起,HotSpot 的对象头(Object Header)分为两部分:

  1. Mark Word 区域,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC 分带年龄等;
  2. 用于存储指向方法区对象类型数据的指针(如果是数组对象的话,还有一个存储数组长度的额外信息)。

Mark Word 在 32 位系统中,有 32bit 空间,其中:

  • 25bit 用来存储 HashCode;
  • 4bit 用来存储对象的分带年龄;
  • 2bit 用来存储锁标志位,01=可偏向锁、00=轻量级锁、10=重量级锁;
  • 1bit 固定为 0。

再说会轻量级锁的执行过程,在代码进入同步块的时候,如果此对象没有被线程所占用,虚拟机会先将此线程的栈帧拷贝一份存储在当前对象的 Lock Record (锁记录) 区域中。

然后虚拟机再使用 CAS (Compare and Swap, 比较并交换) 将本线程的 Mark Word 更新为指向对象 Lock Record 区域的指针,如果更新成功,则表示这个线程拥有了该对象,轻量级锁添加成功,如果更新失败,虚拟机会先检查对象 Mark Word 是否指向了当前线程的线帧,如果是则表明此线程已经拥有了此锁,如果不是,则表明该锁已经被其他线程占用了。如果有两条以上的线程在争抢死锁,那么锁就会膨胀为重量锁,Mark Word 中存储的就是指向重量级锁的互斥量指针,后面等待锁的线程也会进入阻塞状态。

从以上的过程,我们可以看出轻量级锁可以理解为是通过 CAS 实现的,理想的情况下是整个同步周期内不存在锁竞争,那么轻量锁可以有效的提高程序的同步性能,然而,如果情况相反,轻量级锁不但要承担 CAS 的开销还要承担互斥量的开销,这种情况下轻量级锁就会比重量级锁更慢,这就是我们本文的答案。

以上就是"Java轻量级锁比重量级锁快吗"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

轻量 轻量级 对象 线程 存储 过程 指向 知识 篇文章 更新 比重 量级 区域 就是 开销 情况 指针 重量 重量级 同步 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡豆 互联网加科技 网络科技有限互联网 上海万想互联网科技 互联网科技咨询 四个字互联网科技公司取名 互联网实体化科技化 西藏七维空间互联网科技有限公司 福建科技产业互联网发展 崇明区互联网教育科技售后服务 深圳育鹏互联网科技有限公司招聘 中国科技创新与世界互联网大会 天津腾达互联网科技有限公司 浙南科技城互联网大厦建设工程 工业互联网山东科技大学 互联网科技实习生岗位 有人说阿里系是互联网科技企业 工业互联网科技创业 第三届互联网大会安防黑科技 长沙易易互联网科技有限公司 联恩商钥互联网科技有限公司 互联网科技生活的内容 济南华为互联网科技产业总部基地 常德市电业局互联网科技部 港股科技和互联网 乌苏新华互联网科技做什么的 徐州市互联网科技有限公司 广州千川互联网科技有限公司 互联网领先科技成果宣传视频 重庆科技产业互联网有哪些
0