千家信息网

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

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,今天小编给大家分享一下Java轻量级锁比重量级锁快吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起
千家信息网最后更新 2025年02月23日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安全错误 数据库的锁怎样保障安全 接入服务器端口在哪里查 3.2数据库的构建 换换衣服网络安全的画 sqlyog往表导入数据库 广东云主机服务器服务商 西工大网络安全就业情况 互联网科技与教育中心 苹果总是出现无法验证服务器身份 大一英语网络安全的报告结果 甘肃数据库培训费用 天津网络技术转让什么价格 高中会考计算机网络技术试题 计算机软件开发是开发游戏吗 分布式协同服务器搭建 南通永东软件开发有限公司 数据库系统三级模式由什么组成 (象云)网络技术有限公 军职在线计算机网络技术答案 数据库原理及应用课本答案 sql数据库自然连接 工程检索使用哪个数据库 安岳网络安全的手抄报 仅限广州地域云服务器 如何配置数据库odbc数 软件开发 公司名称 软件开发showcase 上传到服务器的xls文件打不开 网络技术不能促进人类道德 黄建文网络安全讲座 数据库原理中的自然连接怎么用
0