JVM锁优化机制
JVM通过自旋锁、自适应自旋、锁消除、锁粗化等技术优化同步性能,同时采用锁升级/降级机制动态调整锁状态。
一、锁升级与降级
锁的4种状态(级别由低到高):
- 无锁状态:初始状态,未发生竞争。
- 偏向锁:单线程重复获取锁时启用,避免CAS开销。
- 轻量级锁:多线程轻度竞争时通过CAS自旋获取锁。
- 重量级锁:竞争激烈时,线程阻塞并依赖操作系统调度。
锁升级/降级:JVM根据竞争情况自动切换锁状态(如偏向锁→轻量级锁)。
注意:synchronized的锁只能升级(膨胀),不能降级(收缩)。
二、锁升级流程
1. 偏向锁(乐观锁)
- 触发条件:首次线程通过CAS获取锁,Mark Word标记为偏向锁。
- 特性:
- 同一线程再次获取锁时直接进入临界区,无需同步操作。
- 适用于无实际竞争的场景(如单线程重复调用)。
2. 轻量级锁(乐观锁)
- 触发条件:第二个线程尝试CAS获取锁失败(发生竞争)。
- 过程

最低0.47元/天 解锁文章
738

被折叠的 条评论
为什么被折叠?



