synchronized的实现原理
synchronized 依赖JVM内部的Monitor对象来实现线程同步。使用的时候不用手动lock和unlock,JVM会自动加锁和解锁。
synchronized加锁代码块时
JVM通过 monitorenter、monitorexit两个指令来实现同步
- 前者表示线程正在尝试获取lock对象的monitor
- 后者表示线程执行完了同步代码块,正在释放锁
synchronized修饰普通方法时
JVM会通过ACC_SYNCHRONIZED标记符来实现同步。
synchronized 依赖JVM内部的Monitor对象来实现线程同步。使用的时候不用手动lock和unlock,JVM会自动加锁和解锁。
JVM通过 monitorenter、monitorexit两个指令来实现同步
JVM会通过ACC_SYNCHRONIZED标记符来实现同步。