public class Test { private synchronized void a() { } private void b() { synchronized (this) { } } private synchronized static void c() { } private void d() { synchronized (Test.class) { } } }
public class Test { private synchronized void a() { } private void b() { synchronized (this) { } } private synchronized static void c() { } private void d() { synchronized (Test.class) { } } }
同一个对象,分别调用方法a和b,锁住的是同一个对象
同一个对象,分别调用方法a和c,锁住的是同一个对象
同一个对象,分别调用方法b和c,锁住的不是同一个对象
同一个对象,分别调用方法a、b、c,锁住的不是同一个对象