【问题标题】:synchrozie get method from map?从地图同步获取方法?
【发布时间】:2011-05-01 07:50:42
【问题描述】:


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

myObj = myMap.get("aaa"); 

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

    }
 }
return myObj;

这是最好的方式。问两次空条件?

【问题讨论】:

    标签: java collections synchronization


    【解决方案1】:

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

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

    【讨论】:

    • 抱歉我忘记写了。刚刚添加了地图放线。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 2014-01-19
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多