ConcurrentHashMap.put VS ConcurrentHashMap.replace

Zha*_* Yi 7 java concurrency map concurrenthashmap java.util.concurrent

从Javadoc我知道ConcurrentHashMap.replace是原子的,但是怎么样ConcurrentHashMap.put?我看到它们在源代码中的实现方式不同,但我无法弄清楚它们的区别.任何大师都会给出一些关于如何使用这两种方法的指导方针?

Jes*_*per 13

它们在功能上是不同的.replace如果已存在指定键下的值,则仅存储键值对.API文档replace解释了它:

仅当前映射到某个值时才替换键的条目.这相当于

if (map.containsKey(key)) {
    return map.put(key, value);
} else return null;
Run Code Online (Sandbox Code Playgroud)

除了动作以原子方式执行.