Enumeration
non getta ConcurrentModificationException
, perché?Enumerazione Java vs Iterator
Vedere sotto il codice.
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);
}
}
E 'solo stampe:
Amit Pathak Aron
Perché questo è un comportamento del genere. Possiamo dire che Enumerator
è thread-safe.
Modifica: Quando si lavora con Iterator, esso genera ConcurrentModificationException
nell'applicazione a thread singolo.
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);
}
}
Si prega di controllare.
Si prega di leggere http://stackoverflow.com/questions/948194/different-using-java-util-enumeration-and-iterator – Garbage
Qual è lo sfondo di questa domanda? Stai pensando di utilizzare le enumerazioni anziché gli iteratori in un ambiente a più thread? –
C'è altro codice da sapere? Non c'è il multithreading nel codice di esempio qui sopra, quindi a meno che tu non abbia una ragione specifica per incolpare la sicurezza dei thread penso che tu sia un po 'fuori pista qui – posdef