在以下情况下,我收到并发修改异常错误。发生这种情况的行标记为“并发修改例外<--------”
我有一个主线程,从列表中读取如下:
List<ThemeCacheIndex> list = Collections.synchronizedList(themeCacheList);
synchronized (list) {
Iterator<ThemeCacheIndex> it = list.iterator();
while (it.hasNext()) {
ThemeCacheIndex themeCacheIndex = it.next(); <-------- ConcurrentModificationException
doSomething();
}
}
我有一个从此列表中删除的异步任务:
@Override
protected String doInBackground(String... params) {
someElementsToRemove = calculateWhichElementsToRemove();
for(int i=0 ; i < someElementsToRemove.size() ; i++){
themeCacheList.remove(someElementsToRemove.get(i));
}
}
我可以想象,它涉及并发情况,但我想通过在主线程上同步列表来防止这种情况。
似乎我不理解多线程和共享对象的概念。
有人可以帮助我解决这个问题吗?如何防止此冲突?
万千封印
小唯快跑啊
汪汪一只猫
相关分类