java - ConcurrentHashMap.put V.S. ConcurrentHashMap.replace

标签 java concurrency map java.util.concurrent concurrenthashmap

从 Javadoc 我知道 ConcurrentHashMap.replace 是原子的,但是 ConcurrentHashMap.put 呢?我看到它们在源代码中的实现方式不同,但我无法弄清楚它们的区别。任何大师都可以提供一些有关如何使用这两种方法的指南吗?

最佳答案

它们在功能上是不同的。 replace 仅在指定键下已存储值时才存储键值对。 replace的API文档是这样解释的:

Replaces the entry for a key only if currently mapped to some value. This is equivalent to

if (map.containsKey(key)) {
    return map.put(key, value);
} else return null;

except that the action is performed atomically.

关于java - ConcurrentHashMap.put V.S. ConcurrentHashMap.replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967479/

相关文章:

java - 从外部 java 文件创建 Java 对象

java - 根据缩放级别在 map 上缩放自定义标记

java - 语句参数的 Hibernate 跟踪值,除了 blob

java - 关于ConcurrentHashMap,下面是什么意思?

java - CompleatableFuture在handle方法中可以异常完成吗?

java - 使用 map.get() 时使用 java Map.containsKey() 是多余的

java - 在 Java 8 中,如何使用 lambda 将 Map<K,V> 转换为另一个 Map<K,V>?

java - 正则表达式匹配整个字符串

Java并发HashMap

sql - 将映射的 XPath 表达式转换为包含关系数据的 XML