- 簡單的來說, 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. 一個是類鎖 一個是對象鎖, 不是相同實例 可以訪問