ConcurrentHashMap的putIfAbsent
时间: 2023-12-05 20:40:30 浏览: 110
JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug.docx
ConcurrentHashMap是Java中线程安全的哈希表实现,putIfAbsent是ConcurrentHashMap提供的一个原子操作方法,用于向哈希表中添加键值对,如果该键已经存在,则返回已存在的值,不会进行覆盖操作。如果该键不存在,则添加该键值对并返回null。下面是一个示例代码:
```java
ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();map.put("key", "value1");
String oldValue = map.putIfAbsent("key", "value2");
System.out.println(oldValue); // 输出:value1
String newValue = map.putIfAbsent("newKey", "value3");
System.out.println(newValue); // 输出:null
```
上述代码中,首先向ConcurrentHashMap中添加了一个键为"key",值为"value1"的键值对。然后使用putIfAbsent方法向ConcurrentHashMap中添加了两个键值对,第一个键为"key",值为"value2",由于该键已经存在,putIfAbsent方法返回了已存在的值"value1";第二个键为"newKey",值为"value3",由于该键不存在,putIfAbsent方法添加了该键值对并返回了null。
阅读全文