我不理解下面的代碼片斷如何能夠線程安全。使用線程安全集合的多個線程
class MapUser {
Map<String,Integer> map = new ConcurrentHashMap<String,Integer>
public void addToMap(String str, Integer val){
if(checkMagicString(str)){
map.put(str,val);
}
}
private boolean checkMagicString(String str){
//some logic to check Magic
//this logic involved operation on the String parameter str i.e. subString,toCharArray etc
}
}
注意方法addToMap被多個線程同時調用。我想確保線程的安全性。通過使用ConcurrentHashMap,我可以確保線程安全地將值添加到它。
但是我不明白如何方法checkMagicString(String str)可以保持線程安全?唯一的辦法是讓它同步嗎?或者應該使調用方法addToMap同步? 請注意,我沒有訪問checkMagicString方法內的地圖。
我假設你正在訪問'checkMagicString'內的'map'?如果沒有,那麼你很好。如果你是那麼請編輯你的帖子以表明這一點。 – Gray 2012-07-10 16:58:50