梦书之家(移动开发)

你有一个苹果,我有一个苹果,我们交换一下,一人还是一个苹果;你有一个思想,我有一个思想,我们交换一下,一人就有两个思想。 ——肖伯纳

导航

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异常。

 

 

posted on 2010-08-27 11:29  梦书  阅读(243)  评论(1编辑  收藏  举报