静态同步方法上的锁会影响它的实例的非静态同步方法吗?
Does the lock on a static synchronized method affect the non-static synchronized methods of it's instances?
假设我有 2 个方法,一个声明为 synchronized
,另一个声明为 static synchronized
。
那么当一个线程获得class级锁时,它是否也获得了它所有实例的锁?换句话说,如果一个线程获得了 class 级锁,另一个线程是否可以同时在其实例之一上获得对象级锁?
static synchronized
方法将为 class 获取 Class
实例上的锁。 synchronized
方法将获取 this
上的锁。当调用同步静态方法获取class级锁时,object-level级锁不受影响。
假设我有 2 个方法,一个声明为 synchronized
,另一个声明为 static synchronized
。
那么当一个线程获得class级锁时,它是否也获得了它所有实例的锁?换句话说,如果一个线程获得了 class 级锁,另一个线程是否可以同时在其实例之一上获得对象级锁?
static synchronized
方法将为 class 获取 Class
实例上的锁。 synchronized
方法将获取 this
上的锁。当调用同步静态方法获取class级锁时,object-level级锁不受影响。