无法解释的错误:java.util.ConcurrentModificationException

无法解释的错误:java.util.ConcurrentModificationException,java,android,arrays,Java,Android,Arrays,我正在遍历一个对象数组,不修改对象。 为什么会出现以下错误 java.util.ConcurrentModificationException 代码: 更新 我有一个加载数组的线程,然后在线程末尾调用一个处理程序。此时,阵列已加载。 在这个处理程序中,我访问数组,如代码所示。此预运行线程是问题所在吗?当两个不同的操作同时更改同一数据集时,会引发错误 多线程时会发生这种情况:后台线程中的某个内容添加、删除或更改了列表中某个项目的位置,在完成列表循环之前另一个线程正在访问您的线程不安全列表,或者您正

我正在遍历一个对象数组,不修改对象。 为什么会出现以下错误

java.util.ConcurrentModificationException

代码:

更新


我有一个加载数组的线程,然后在线程末尾调用一个处理程序。此时,阵列已加载。 在这个处理程序中,我访问数组,如代码所示。此预运行线程是问题所在吗?

当两个不同的操作同时更改同一数据集时,会引发错误


多线程时会发生这种情况:后台线程中的某个内容添加、删除或更改了列表中某个项目的位置,在完成列表循环之前

另一个线程正在访问您的线程不安全列表,或者您正在尝试修改循环中的列表,以便在需要使用下一个元素进行迭代时代码中断。如果它是另一个线程,那么也许可以通过添加synchronized语句将列表类型更改为或锁定列表,但是,不要在其中更改列表。循环

synchronized (events) {
    for (Event event: events) {
        HistoryDate eventDate = event.getEventDate();

        if (eventDate.isGreaterEqualThen(searchDate)) {
            ActualDate.setDate(event.getEventDate());

            break;
        }
    }
}

您正在使用多线程应用程序,对吗?粘贴完整的代码段?。。。看来这个代码可以用了。我需要知道,这段代码是如何链接的?是的,我打赌静态方法HistoryData.getEvents返回的列表正在另一个线程中修改。我有一个线程加载数组,然后在线程末尾调用一个处理程序。在这个处理程序中,我访问数组,如代码所示。那么线程就是问题所在吗?
synchronized (events) {
    for (Event event: events) {
        HistoryDate eventDate = event.getEventDate();

        if (eventDate.isGreaterEqualThen(searchDate)) {
            ActualDate.setDate(event.getEventDate());

            break;
        }
    }
}