java.util.ConcurrentModificationException

今天项目测出一条异常。

大概是这样的,我定义了一个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,第一次写日志。给自己留一个成长的脚印。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值