- 简单的来说, Synchronized 如果作为方法, 那么锁的粒度是 实例对象
- static Synchronized 作为方法, 那么锁的粒度是 类 不同实例 也会被限制, A.invoke() B.invoke() 不能同时访问
pulbic class Something(){
public synchronized void isSyncA(){}
public synchronized void isSyncB(){}
public static synchronized void cSyncA(){}
public static synchronized void cSyncB(){}
}
a. x.isSyncA()与x.isSyncB()
b. x.isSyncA()与y.isSyncA()
c. x.cSyncA()与y.cSyncB()
d. x.isSyncA()与Something.cSyncA()
A. 相同对象访问不同的 synchronized 方法, 不可同时访问
B. 不同对象访问相同synchronized 方法 可以同时访问,因为是不同实体类
C. 因为是 static synchronized 相当于类Something.cSyncA() 和 Something.cSyncB() 不可同时访问
D. 一个是类锁 一个是对象锁, 不是相同实例 可以访问