Java学习4
1 快速报错
Java对容器提供了一种叫做fail-fast(快速报错)的机制:只需创建一个迭代器,然后向迭代器所指向的Collention添加或者删除东西,就会发生ConcurrentModificationException异常,如下代码所示:
import java.util.*;
public class FailFast {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
c.add("hello");
c.add("world");
Iterator<String> it = c.iterator();
c.remove("hello");
try {
String s = it.next();
System.out.println(s);
} catch(ConcurrentModificationException e) {
System.out.println(e);
}
}
}
应该将 Iterator<String> it = c.iterator(); 放在c.remove("hello")之后,即迭代器的创建必须在对容器的所有的能引起容器发生变化的操作(如增加或者删除或者排序等)之后。
Collection的同步控制: Java会监听容器上的任何除了你的进程所进行的操作以外的任何变化,一旦发现其他进程修改了容器,就会立刻抛出ConcurrentModificationException异常。