synchronized 修饰代码块在 JVM 中具体是如何实现的?
考察说明
考察对 synchronized 字节码层面实现原理和锁升级机制的理解
回答思路
- 能准确说出 monitorenter 和 monitorexit 两个字节码指令
- 说明异常情况下会通过异常处理路径自动执行 monitorexit 确保锁释放
- 能讲清基于重量级锁的 monitor 对象原理,并能提及偏向锁、轻量级锁到重量级锁的升级过程
- 能区分 synchronized 代码块与 synchronized 方法在字节码实现上的不同