synchronized - JiyangM/spring GitHub Wiki

参考《java并发编程艺术》

优点,保证了并发编程的3大特性:

  • 原子性
  • 可见性
  • 顺序性

表现形式:

  • 对于普通方法:锁住的是实例对象;
  • 对于静态同步方法:锁住的是class对象;
  • 对于同步代码块:锁住的是的括号里面配置的对象;

原理:

任何一个对象,都有一个monitor与之关联,JVM基于进入和退出monitor来是实现方法同步和代码块同步。 代码块同步使用的monitorenter和monitorexit实现的。一个monitor对象被持有后,它将处于锁定状态。