多线程中 synchronized 锁升级的原理

欣喜 Java教程 发布时间:2023-11-07 15:34:21 阅读数:1452 1
下文笔者讲述多线程中锁升级的相关简介说明,如下所示

synchronized 锁升级原理

对象的对象头里有一字段:
     threadid  

首次访问锁对象
    threadid 为空,JVM 让其持有偏向锁
     并将 threadid 设置为当前线程 id

再次访问锁对象
    会先判断 threadid 是否与当前线程 id 一致
      若一致则可以直接使用此对象
     若不一致,则升级偏向锁为轻量级锁

等待锁对象中
    通过自旋循环一定次数来获取锁
    执行一定次数后
     若还未能正常获取到要使用的对象
    此时就会把锁从轻量级锁升级为重量级锁

锁的升级的目的

锁升级,是为了降低使用锁带来的性能消耗
Java 1.6 之后优化 synchronized 的实现方式
使用了偏向锁升级为轻量级锁再升级到重量级锁的方式
从而降低使用锁带来的性能消耗

锁的升级不可逆

无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁,且锁升级的顺序是不可逆的
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202311/7303.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者