面试真题

Java · 中等 · 阿里巴巴

Synchronized 锁膨胀经历哪些过程?

中等 Java 🎤 阿里巴巴
参考答案
结论:锁膨胀过程为无锁→偏向锁→轻量级锁→重量级锁。过程:1.无锁:对象头mark word无锁状态;2.偏向锁:首线程访问CAS记录线程ID,后续该线程直接进入;3.轻量级锁:其他线程竞争,撤销偏向锁,线程栈帧建锁记录CAS自旋;4.重量级锁:自旋失败或竞争烈,升级为重量级锁,线程阻塞挂起依赖OS mutex。注意膨胀不可逆。原理:对象头mark word存储锁状态,JVM根据竞争动态升级以减少开销。偏向锁默认延迟开启。
题目整理自公开面经,答案由校招宝自研生成,仅供参考