我收到了ConcurrentModificationException(ArrayList)异常,我不确定如何解决它,因为在这种情况下,这种异常非常罕见且不可重现。
情况: 我有一个主线程:
for(Element element : myList){
Value value = element.getValue(); <-------- ConcurrentModificationException (ArrayList)
}
还有一个带有以下内容的AsyncTask:
public class LoadMapObjectsTask extends AsyncTask<String, String, String> {
protected String doInBackground(String... params) {
// some other logic
myList.remove(element);
}
}
我可以理解冲突,但是我不确定如何正确预防冲突。也许使用简单的sync {}?我该如何解决?
答案 0 :(得分:0)
也许您可以使用Iterator.remove()
更改代码以返回特定的值,该值可以识别为删除元素的符号:
Iterator<Element> it = myList.iterator();
while (it.hasNext()) {
Value value = it.next().getValue()
if (value == null) {
it.remove();
}
}