0

我必须实现逻辑,仅当键当前未映射到任何值时,我才需要为键自动设置对象。我可以自己实现它,但如果它已经在某个地方完成,我不想重新发明轮子。

4

2 回答 2

5

ConcurrentHashMapputIfAbsent方法,可能是你需要的。正如 dogbane 指出的那样,它实际上是在 base interface 中定义的ConcurrentMapConcurrentSkipListMap它也是如此。

于 2012-05-08T14:45:59.497 回答
4

使用ConcurrentHashMap.putifAbsent

如果指定的键尚未与值关联,则将其与给定值关联。这相当于

if (!map.containsKey(key))
   return map.put(key, value);    
else
   return map.get(key); 

除了动作是原子执行的。

于 2012-05-08T14:45:59.863 回答