从地图同步获取方法?

时间:2011-05-01 07:50:42

标签: java collections synchronization


为了同步我使用的地图获取方法

myObj = myMap.get("aaa"); 

if (myobj==null)
    synchronize (someObject){
        myObj = mymap.get("aaa");  
        if (myobj==null){
            myObj = createNew();
            myMap.put(myObj);

    }
 }
return myObj;

这是besdt方式。问两次空状态?

1 个答案:

答案 0 :(得分:2)

同步get只是不是很有用。 get不会更改地图的状态。您还必须同步put(使用相同的对象监视器)。您可以使用Collections.synchronizedMap(..)ConcurrentHashMap作为

更新:对于get & then put,您可以使用ConcurrentHashMap.putIfAbsent(..)