在这两个迭代器 CopyOnWriteArrayList和ConcurrentHashMap 有故障安全和不乱扔CME.
IN CopyOnWriteArrayList<E>迭代器构建在原始底层数组的快照上.所以这里的迭代器是故障安全的,也是线程安全的.
Javadcos CopyOnWriteArrayList<E> 明确表示术语快照.
"快照"样式迭代器方法在创建迭代器时使用对数组状态的引用.这个数组在迭代器的生命周期中永远不会改变,所以干扰是不可能的,并且保证迭代器不会抛出ConcurrentModificationException.
在ConcurrentHashMap迭代器的情况下是否也建立在原始底层地图的快照上?
谢谢...
不一定 - 比较javadoc(强调我的):
类似地,Iterators和Enumerations 在迭代器/枚举的创建时或之后的某个时刻返回反映哈希表状态的元素.
如果你看一下values,entrySet和keySet方法:
视图的迭代器[...]保证在构造迭代器时遍历元素,并且可以(但不保证)反映构造之后的任何修改.
| 归档时间: |
|
| 查看次数: |
1245 次 |
| 最近记录: |