我不理解下面的代码片断如何能够线程安全。使用线程安全集合的多个线程
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