java.util.ConcurrentModificationException

来源:互联网 发布:中奖概率算法 编辑:程序博客网 时间:2024/06/06 00:25

今天项目测出一条异常。

大概是这样的,我定义了一个List作为一个共享区域,一个线程负责向List添加,另一个线程负责遍历。

java.util.ConcurrentModificationException异常就是在遍历的时候抛出的。

上网查了原因,是迭代器没有和List的长度同步造成的。也就是说读线程在遍历的时候,写线程改变了List的长度,因而抛出异常。

读线程的错误代码:

ArrayList<String> List = new ArrayList<String>();

for(String str:List ){

 //TODO...

}

for语句使用了Iterator这个对象,某一时刻Iterator并不知道List的实际长度,因为写线程不停的改变List长度。

解决

int len = List.size();

for(int i = 0;i < len;i++){

String str = List.get(i);

//TODO...

}


刚接触JAVA,第一次写日志。给自己留一个成长的脚印。

0 0