1.修饰方法时——有一个标志来指出该方法是否是同步方法
2.当为代码块时
它使用的是monitorenter(指向同步代码块的开始位置)和monitorexit指令(指向同步代码块结束的位置),当执行第一个指令时,线程尝试获取锁(monitor),(monitor存在每个对象的对象头位置),并将计算器加1,执行第二个命令之后,就将计数器设为0,表明锁被释放。
不过两者的本质都是对对象监视器 monitor 的获取
1.修饰方法时——有一个标志来指出该方法是否是同步方法
2.当为代码块时
它使用的是monitorenter(指向同步代码块的开始位置)和monitorexit指令(指向同步代码块结束的位置),当执行第一个指令时,线程尝试获取锁(monitor),(monitor存在每个对象的对象头位置),并将计算器加1,执行第二个命令之后,就将计数器设为0,表明锁被释放。
不过两者的本质都是对对象监视器 monitor 的获取