我正在编写一个弹簧控制器声明一些私人hashmap和更新他们在一些方法。当然,我知道并发访问的问题,所以我使用最简单的方法来避免这些问题:“同步”Java线程安全功能。但我想知道如果我应该同步我的方法或只有我需要安全地更新线程hashmap:Java线程安全,数据竞争和良好的实现
@Controller
public class myController{
private HashMap<String, String> myHashMap = new HashMap<String, String>();
...
//That way ?
public synchronized updateMyHashmap(){
myHashMap.add(value);
}
//or this way ?
public static void updateMyHashMap(){
synchronized(myHashMap){
myHashMap.add(value)
}
}
}
这些方法是等价的吗?我会有同样的应用程序行为吗?
你不是只使用ConcurrentHashMap而是任何理由? –
@Jon:参见对Jilles的回应 – Zamboo