1. Synchronized 修饰静态方法或者 synchronized(xx.class) { }, 都是属于类锁, 对于当前类的所有对象, 同时只能有一个线程能够访问锁住的方法或者代码块,其他线程会被阻塞住。
2. Synchronized 修饰实例方法(即不是static修饰的方法),或者synchronized(this) { }, 都是属于对象锁,该锁只对当前实例生效,其他对象还是拥有属于自己的锁,换言之,当前对象对应的多个线程,只会有一个线程能够执行锁住的方法或者代码块,而其他对象的执行则是隔离的,竞争的是自己的锁。