【发布时间】:2012-07-10 16:56:38
【问题描述】:
我不明白如何使下面的代码 sn-p 成为线程安全的。
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 方法中访问地图。
【问题讨论】:
-
我假设您正在访问
map内部的checkMagicString?如果没有,那么你很好。如果您是,请编辑您的帖子以显示这一点。
标签: java multithreading