synchronized底层如何实现的?大家一般怎么回答
我这样回答面试官说不对`````````````````````````
代码块同步是使用monitorenter和monitorexit指令实现,
monitorenter指令是在编译后插入到同步代码块的开始位置,而monitorexit是插入到方法结束处和异常处,
JVM要保证每个monitorenter必须有对应的monitorexit与之配对。任何对象都有一个 monitor
与之关联,当且一个monitor 被持有后,它将处于锁定状态。线程执行到 monitorenter 指令时,将会尝试获取对象所对应的
monitor 的所有权,即尝试获得对象的锁。