相关疑难解决方法(0)

Oracle Java ConcurrentHashMap的错误实现?

我正在测试ConcurrentHashMapOracle的Java 8实现:

ConcurrentMap<String, String> concurrentMap = new ConcurrentHashMap<>();
String result = concurrentMap.computeIfAbsent("A", k -> "B");
System.out.println(result);  // "B"
result = concurrentMap.putIfAbsent("AA", "BB");
System.out.println(result);  // null
Run Code Online (Sandbox Code Playgroud)

中的JavadoccomputeIfAbsent不说

实施要求:

默认实现等效于此映射的以下步骤,然后返回当前值,如果现在不存在则返回null:

if (map.get(key) == null) {
    V newValue = mappingFunction.apply(key);
    if (newValue != null)
        return map.putIfAbsent(key, newValue);
}
Run Code Online (Sandbox Code Playgroud)

它表示然后返回当前值,如果现在不存在则返回null.那不应该回来null吗?鉴于这putIfAbsent也正在回归null.

我在这里错过了什么?

java oracle concurrenthashmap java-8

12
推荐指数
1
解决办法
1129
查看次数

标签 统计

concurrenthashmap ×1

java ×1

java-8 ×1

oracle ×1