Enumeration
no tira ConcurrentModificationException
, ¿por qué?Enumeración Java vs iterador
Vea el siguiente código.
public static void main(String[] args) {
Vector<String> v=new Vector<String>();
v.add("Amit");
v.add("Raj");
v.add("Pathak");
v.add("Sumit");
v.add("Aron");
v.add("Trek");
Enumeration<String> en=v.elements();
while(en.hasMoreElements())
{
String value=(String) en.nextElement();
System.out.println(value);
v.remove(value);
}
}
sólo se imprime:
Amit Pathak Aron
¿Por qué es este tipo de comportamiento. ¿Podemos decir que Enumerator
es seguro para subprocesos?
Edit: Cuando se trabaja con Iterator arroja ConcurrentModificationException
en la aplicación de un solo hilo.
public static void main(String[] args) {
Vector<String> v=new Vector<String>();
v.add("Amit");
v.add("Raj");
v.add("Pathak");
v.add("Sumit");
v.add("Aron");
v.add("Trek");
Iterator<String> it=v.iterator();
while(it.hasNext())
{
String value=(String) it.next();
System.out.println(value);
v.remove(value);
}
}
Compruebe.
Lea http://stackoverflow.com/questions/948194/different-using-java-util-enumeration-and-iterator – Garbage
Cuál es el trasfondo de esta pregunta? ¿Está considerando usar enumeraciones en lugar de iteradores en un entorno de múltiples subprocesos? –
¿Hay algún otro código que debamos conocer? No hay multiprocesamiento en el código de ejemplo anterior, así que a menos que tenga una razón específica para culpar a la seguridad del hilo, creo que está un poco fuera de rumbo aquí – posdef