fud*_*udy 2 java dictionary concurrenthashmap
这是我对ConcurrentHashMap的测试
@Test
public void testIt2() {
Map<String, String> map = new ConcurrentHashMap<String, String>();
map.put("2", "2");
map.put("1", "1");
for (Entry<String, String> entry : map.entrySet()) {
map.clear();
System.out.println(entry.getKey());
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
1
2
Run Code Online (Sandbox Code Playgroud)
为什么?
循环结束后,您可以看到更改.您可以再次打印出地图以查看差异.它会是空的.我想补充的一部分@waldheinz的答案:
如果在迭代时从地图中添加或删除值会发生什么?
如果你这样做,那么事情就不会破坏(这就是"并发"的
ConcurrentHashMap意思).但是,无法保证一个线程会看到另一个线程执行的映射更改(无需从映射中获取新的迭代器).保证迭代器在创建时反映地图的状态.进一步的变化可能会反映在迭代器中,但它们并非必须如此.
| 归档时间: |
|
| 查看次数: |
995 次 |
| 最近记录: |