为了同步我使用的地图获取方法
myObj = myMap.get("aaa");
if (myobj==null)
synchronize (someObject){
myObj = mymap.get("aaa");
if (myobj==null){
myObj = createNew();
myMap.put(myObj);
}
}
return myObj;
这是besdt方式。问两次空状态?
答案 0 :(得分:2)
同步get
只是不是很有用。 get
不会更改地图的状态。您还必须同步put
(使用相同的对象监视器)。您可以使用Collections.synchronizedMap(..)
或ConcurrentHashMap
作为
更新:对于get & then put
,您可以使用ConcurrentHashMap.putIfAbsent(..)