我正在使用 Maps 分析故障安全迭代器并验证,如果我们正在更新密钥集,操作会发生在克隆还是实际地图上
private static void failSafeIterator() {
ConcurrentHashMap<String, String> map=new ConcurrentHashMap<>();
map.put("a", "one");
map.put("b", "two");
Iterator<String> keyIterator=map.keySet().iterator();
while(keyIterator.hasNext()){
String key=keyIterator.next();
System.out.println(key+":"+map.get(key));
map.put("c", "three");
map.put("q", "four");
map.put("W", "five");
}
System.out.println(map.get("q"));
}
根据上面的代码片段,
c、q 和 w 的添加应该发生在克隆而不是实际集合上
但是我可以看到集合中发生的更新。
此外,输出有点混乱,因为并非所有键值对都被打印出来,即使键存在于映射中。
输出:
a:one
b:two
c:three
W:five
four
吃鸡游戏
相关分类