0

キーが現在どの値にもマップされていない場合にのみ、キーのオブジェクトをアトミックに設定する必要があるロジックを実装する必要があります。私はこれを自分で実装できますが、すでにどこかで行われている場合は、車輪を再発明したくありません.

4

2 に答える 2

5

ConcurrentHashMapメソッドがputIfAbsentあります。必要なものかもしれません。そしてdogbaneが指摘したように、これは実際には base interfaceConcurrentMapで定義されているので、ConcurrentSkipListMapそれもそうです。

于 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 に答える