Java并发编程(三) : synchronized底层原理、优化Monitor重量级锁、轻量级锁、自旋锁(优化重量级锁竞争)、偏向锁

本文深入探讨了Java中的synchronized关键字,包括Monitor概念、对象头结构、重量级锁、轻量级锁、自旋锁以及偏向锁的工作原理。详细解释了锁的状态转换过程,如如何从偏向锁升级到重量级锁,并介绍了自旋锁在优化锁竞争中的作用。此外,还讨论了如何通过JVM参数调整来禁用或启用偏向锁,以及锁消除等优化策略。
摘要由CSDN通过智能技术生成

参考:synchronized 原理、使用、锁升级过程,写到我要吐血了

一、 Monitor 概念

0、 Java 对象头 (重点)

对象头包含两部分:运行时元数据(Mark Word)类型指针 (Klass Word)

  1. 运行时元数据 (Mark Word)
    • 哈希值(HashCode),可以看作是堆中对象的地址
    • GC分代年龄(年龄计数器) (用于新生代from/to区晋升老年代的标准, 阈值为15)
    • 线程持有的锁对象
    • 锁状态标志 (用于JDK1.6对synchronized的优化 -> 轻量级锁)
    • 偏向线程ID (用于JDK1.6对synchronized
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white camel

感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值