Ver Mensaje Individual
  #7 (permalink)  
Antiguo 22/02/2010, 06:41
javiervillalobos
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Re: Problema eliminando elemento de un ArrayList

Cita:
Iniciado por tunombre Ver Mensaje
He cambiado el bucle por si podía ser problema del Iterator pero sigue lanzandome el mismo error:

Código:
  public void sacaCoche(String matricula)
	{
		Coche cocheABorrar = null;

		for( int i=0; i<this.listadoCoches.size(); i++)
		{
			Coche coche = this.listadoCoches.get(i);
			if(coche.getMatricula().equalsIgnoreCase(matricula))
			{
				cocheABorrar = coche;
				break;
			}
		}
		if( cocheABorrar == null )
			System.out.println("Coche no encontrado");
		else this.listadoCoches.remove(cocheABorrar);		
	}
Nadie ve dónde puede estar el error?
Tal vez el problema se de cuando llamas al método "sacaCoche(...)" desde varios lugares en forma concurrente. Ya que this.listadoCoches es una propiedad compartida, pueden haber múltiples threads (o request en una pág. web) accediendo, a través de "sacaCoche(...)" a este listado. De esta forma, cuando hay uno de esos threads (o request) recorriendo el listado para detectar qué coche sacar, puede haber otro thread haciendo el "remove" y ahí la cosa queda "indeterminable". Como precaución a esto, JVM arroja la "exception" que se indica.
Prueba usar bloques "synchronized", utilizando mapas o listas sincronizadas (ver java.util.Collections).