Enumeration
не выбрасывает ConcurrentModificationException
, почему?Перечисление Java против Iterator
См. Ниже код.
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);
}
}
Это только печатает:
Amit Pathak Aron
Почему это такое поведение. Можем ли мы сказать, что Enumerator
является потокобезопасным.
Редактировать: При работе с Iterator он выбрасывает ConcurrentModificationException
в однопоточном приложении.
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);
}
}
Пожалуйста, проверьте.
Пожалуйста, ознакомьтесь с http://stackoverflow.com/questions/948194/different-using-java-util-enumeration-and-iterator – Garbage
Что предыстория этого вопроса? Вы рассматриваете использование перечислений вместо итераторов в многопоточной среде? –
Есть ли еще код, о котором мы должны знать? В приведенном выше примере нет многопоточности, поэтому, если у вас нет конкретной причины винить безопасность потоков, я думаю, что вы немного внедорожники здесь – posdef