Java 列表ConcurrentModificationException

Java 列表ConcurrentModificationException,java,java.util.concurrent,concurrentmodification,Java,Java.util.concurrent,Concurrentmodification,我有以下代码 public void saveProjects(List<Project> proj) throws DatabaseException { for (Project listItems: proj) { // error here insertProjects(listItems); } } private void insertProjects(Project prj) throws DatabaseException {

我有以下代码

public void saveProjects(List<Project> proj) throws DatabaseException {
    for (Project listItems: proj) { // error here

        insertProjects(listItems);
    }
}

private void insertProjects(Project prj) throws DatabaseException {
    commitObjects(prj);
}
源代码

for (Project persist: projectList) { 
     persist.setProjectId("K7890");
     persist.setName(fileName);

      myDAO.saveProjects(projectList); 
 }

projectList.clear(); // <-- clear might cause to this Exception
它通过迭代器
It
删除当前对象,迭代器具有对基础集合
列表的引用

避免:

list.remove(myObject);

看起来很奇怪,我猜是您在另一个线程中修改列表(
list proj
),同时对其进行迭代

因为在你给我们的代码中,你没有以任何方式改变列表


您可以尝试调用带有
proj
列表副本的
saveProjects
方法。

不确定投票失败的原因。这是一个合法而完整的问题。我收回这句话。打字错误分散了注意力,误导了人。@hovercraftofeels谢谢
committeobjects(prj)
do?它是否以某种方式修改了
列表项目
?@hovercraftfullofels我已经包含了commitObjects方法代码段。这充其量只是一个注释(正如您已经做的那样),而不是一个答案。Maxim,如果我从第二个中删除for循环,它将停止保存记录。如果您提交
插入项目(列表项)仍然会出现此错误?您的意思是直接调用
插入项目(listItems)?切换注释,如//插入项目(列表项);也许连接会起作用。当我评论插入项目(列表项)时,我不熟悉数据访问逻辑则没有例外。
it.remove();
list.remove(myObject);