请解释 synchronized 的底层实现原理,并说明它与 Lock 接口的主要区别。
考察说明
考察并发同步机制的理解深度、对比分析能力
回答思路
- 能说明 synchronized 基于对象头的 Monitor 实现,涉及偏向锁、轻量级锁、重量级锁的升级路径
- 能讲清 Monitor 的 wait/notify 机制与锁的语义
- 能从锁的获取方式、可中断性、公平性、超时、锁粒度(代码块 vs 显式加解锁)等维度对比 Lock
- 能提到优化点如锁消除、锁粗化、自适应自旋
- 能结合实际场景说明如何选择 synchronized 或 Lock