PDA

View Full Version : ConcurrentModificationException[JAVA]


cerza
19-10-2016, 17:09
Salve a tutti,
ho dubbio, dopo aver inserito questo pezzo di codice

Set<State> newSet = new HashSet<>();
for (State state : stateReached) {
if ((state.getFather() != null)) {
if ((state.getFather().isCount()) & (state.getFather().getMin() == 0)) {
for (Transition transPadre : state.getFather().getEpsilonTransition()) {
newSet.addAll(transPadre.runTransition(stateInitial, c));
}
}
}
}
stateReached.addAll(newSet);
nell'eseguire i test di unità mi ritrovo una concurrentModifiactionExcpetion, ma non riesco a capire cosa c'è di concorrente, può essere che Junit esegua contemporaneamente vari test e quindi l'eccezione è legata a questo?
Grazie a quanti leggeranno ed un grazie in più a chi sa darmi qualche suggerimento ;)

sottovento
19-10-2016, 22:41
E' un errore subdolo.
Apparentemente un iteratore e' stato modificato da un altro thread, oppure il set e' stato modificato durante l'iterazione.
Hai due iteratori che pero' sono locali e difficilmente qualcuno li puo' modificare , mentre vai a modificare il set chiamato newSet.
Sei sicuro che il problema non sia la modifica di newSet? Oppure la successiva modifica di stateReached?

cerza
20-10-2016, 12:21
Grazie per la risposta,
ho controllato sia sia il newSet che il stateReached ma alla fine penso si sia creato qualche confusione con il refactory di un metodo, per ora sembra funzionare il tutto senza eccezioni ;)
Grazie ancora