我不明白如何使下面的代码片段成为线程安全的。
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 方法中访问地图。