synchronized - JiyangM/spring GitHub Wiki
参考《java并发编程艺术》
优点,保证了并发编程的3大特性:
- 原子性
- 可见性
- 顺序性
表现形式:
- 对于普通方法:锁住的是实例对象;
- 对于静态同步方法:锁住的是class对象;
- 对于同步代码块:锁住的是的括号里面配置的对象;
原理:
任何一个对象,都有一个monitor与之关联,JVM基于进入和退出monitor来是实现方法同步和代码块同步。 代码块同步使用的monitorenter和monitorexit实现的。一个monitor对象被持有后,它将处于锁定状态。