我正在尋找關於同步塊的說明。考慮這個類 -Java - 同步對象/塊
public class A{
Map map;
public getValue(String key){
return map.get(key);
}
public remove(String key){
synchronized(map){
map.remove(key);
}
}
}
A是一個單身人士。 getValue在整個應用程序中被多個線程大量訪問。我添加一個新的方法,刪除,從地圖中刪除一個鍵。如果刪除是按照上述方式執行的,那麼
- 當一個線程在remove方法的同步塊中時,我認爲它會獲取地圖對象上的一個鎖。這是否意味着嘗試通過getValue方法訪問地圖的其他線程將被阻止? (我希望他們)
- 當同步的remove方法中沒有線程時,線程將像往常一樣訪問getValue方法函數,即不會互相阻塞? (我也喜歡)。
我希望getValue線程只有在有線程執行刪除操作時纔會阻塞。
只有同步的塊纔會阻塞。 – 2012-07-09 18:47:19