Java LinkedList的ConcurrentModificationException

gag*_*nbm 1 java iterator linked-list

我有对象的LinkedList和迭代器.我知道当您尝试在运行迭代器时修改列表时会抛出此ConcurrentModificationException.但在我的情况下,我不明白这种修改在哪里.

迭代器看起来像这样:

private static void insertTasks(Task t) {
    if(eventQueue.size() == 0) {
        eventQueue.addFirst(tsk);
        return;
    }

    int pos = 0;
    while (itr.hasNext()){
   //The line below throws the exception

        if (t.getArrivalTime() <= itr.next().getArrivalTime() ) 
        {           
            break;
        }
        pos++;
    }
}
Run Code Online (Sandbox Code Playgroud)

insertTasks从另一种方法调用此方法,如下所示:

tsk = null;
tsk = new Task(1,"P1",1,4.0f,1.5f,0.0f,8.0f);
insertTasks(tsk);

tsk = null;
tsk = new Task(0,"P0",2,5.0f,2.5f,1.0f,10.0f);
insertTasks(tsk);
Run Code Online (Sandbox Code Playgroud)

getArrivalTimeTask对象的样子:

public float getArrivalTime() { return arrivalTime; }
Run Code Online (Sandbox Code Playgroud)

我的问题是,我在哪里做这个修改?while我运行它的循环iterator没有做任何修改.可以 ?

我错过了什么吗?

Aug*_*sto 5

我认为问题在于itr你的类中是一个静态字段,而这正在创建问题,因为你eventQueue在第二次调用中添加了一个元素insertTasks().

避免使用静态字段...编程让自己害怕并尽可能地避免使用它们.他们邪恶,OO不友好.