android上java.util.ConcurrentModificationException错误解决

今天在运行Android代码,发现程序崩溃了,发现错误为“java.util.ConcurrentModificationException ”,错误栈在list里面。

然后,看异常变量,为list本身错误。

笔者马上想起来了,list和vector 的区别:

1)list是非线程安全的,vector是线程安全的。

2)这造成list本身比vector操作更快,但也更不安全。

马上想到用vector替换list。

然后,发现还是有问题,提示如下:

java.util.ConcurrentModificationException

at java.util.Vector$Itr.checkForComodification(Vector.java:1200)

找到了相关资料,发现资料如下:

(1)https://www.jianshu.com/p/813b7a3f2066

(2)https://blog.csdn.net/chengliang0315/article/details/78731941

大意是说,vector也可以产生该错误,为 “modCount != expectedModCount”时产生。

笔者想了想,既然是多线程同步造成的,那就加上同步即可;可以还是用原来的list。于是,进行如下同步:

在代码块上加上synchronized,形如:

synchronized(list) {
    //正式代码
}

然后,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值