https://bugs.openjdk.java.net/browse/JDK-8240162
这个 ConcurrentHashMap 的 bug,运行它的用例,会产生一个 bug,就是明明 map 中有映射,但 size 为 0 。
import java.util.concurrent.*;
public class test5 {
public static void main(String[] args) {
final ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
final String key = "key";
final String value = "value";
map.put("anotherKey", "anotherValue");
map.put(key, value);
System.out.println("size=" + map.size());
map.computeIfPresent(key, (aKey, aValue) -> {
map.computeIfPresent(key, (bKey, bValue) -> null);
return null;
});
System.out.println("size=" + map.size());//这句返回 0
map.put(key, value);//这句打断点
System.out.println("size=" + map.size());
}
}
可以发现明明 map 中有映射,但 size 为 0 。
运行环境 jdk8
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.