Estoy programando una aplicación en la que tengo un ArrayList<Objeto> que utilizo para repartir tareas entre los distintos objetos.
Para ello la aplicación tiene un método private Objeto escogerObjeto() que devuelve un Objeto elegido de acuerdo a sus criterios.
Por el momento el único criterio que quiero seguir es escoger el Objeto siguiente.
El código, por tanto, me queda así:
private Objeto escogerObjeto(){
if(objIt.hasNext()){
return objIt.next();
}
else{
objIt = objetos.iterator();
return objIt.next();
}
}
Que básicamente lo que hace es devolver el siguiente objeto de la lista o, si el iterador ha llegado a la ultima posición, reiniciarlo y devolver el primer objeto.
Cada vez que ejecuto el código llega a la primera condición, la cumple, entra en el if y me devuelve una excepción ConcurrentModificationException, pero por más que miro el código (que es bien simplón) no veo cómo puede estar produciéndose un acceso concurrente.
No hay distintos threads que puedan estar ejecutando la instrucción al mismo tiempo.
¿Alguna idea?