개체 및 반복기의 LinkedList를가집니다. 이 이터레이터를 실행하는 동안 목록을 수정하려고하면이 ConcurrentModificationException이 발생합니다. 하지만 제 경우에는이 수정이 어디에서 이루어지고 있는지 이해할 수 없습니다. 아래 그림과 같이Java 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);
Task
객체의
getArrivalTime
의 모습
:
public float getArrivalTime() { return arrivalTime; }
내 질문은 어디에 있습니까? 이 수정을하고 있습니까? 이 iterator
을 실행하는 while
루프는 수정 작업을 수행하지 않습니다. 그거야?
내가 누락 된 항목이 있습니까? 나는이 문제를 이해 할수
두 개 이상의 스레드에서 액세스합니까? iterating 동안 코드의 다른 곳에서 다른 스레드에서 수정할 수 있습니까? –
아니요. 하나의'main' 스레드 만 있습니다. – gaganbm
문제를 재현하는 자체 포함 된 예제를 제공 할 수 있습니까? 제공하지 않은 코드로 컬렉션을 변경하고있는 것 같습니다. –