オブジェクトの 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++;
}
}
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);
オブジェクトのは次のようgetArrivalTime
になりTask
ます。
public float getArrivalTime() { return arrivalTime; }
私の質問は、この変更をどこで行っているのですか? これwhile
を実行するループはiterator
、変更を行っていません。そうですか?
何か不足していますか?