| 序号 | 键 | 不及格 | 故障安全 |
|---|---|---|---|
| 1 | 例外 | 集合中的任何更改(例如在线程期间添加,删除和更新集合)都是迭代集合,然后使快速抛出并发修改异常失败。 | 故障安全集合不会引发异常。 |
| 2。 | 集合类型 | ArrayList和hashmap集合是快速失败迭代器的示例 | CopyOnWrite和并发修改是故障安全迭代器的示例 |
| 3。 | 性能与记忆 | 而是在实际集合上工作。因此,此迭代器不需要额外的内存和时间 | 它正在处理集合的克隆,而不是实际的集合。时间和内存方面的开销 |
| 4。 | 修改项 | 迭代器不允许在对集合进行迭代时对其进行修改。 | 故障保护迭代器允许在对集合进行迭代时对其进行修改。 |
public class FailSafeExample{
public static void main(String[] args){
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>();
//在映射上添加元素
map.put("Dell", 1);
map.put("IBM", 2);
//从映射获取迭代器
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()){
String key = (String) it.next();
System.out.println(key+" : "+map.get(key));
map.put("Google", 3);
}
}
}输出结果
IBM :2 Dell:1
public class FailFastExample{
public static void main(String[] args){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
//从列表中获取迭代器
Iterator<Integer> it = list.iterator();
while (it.hasNext()){
Integer integer = (Integer) it.next();
list.add(4);
}
}
}输出结果
Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(Unknown Source)