Ниже приведен код, я получаю ConcurrentModificationException
в вызове subiter.next()
, хотя я не изменяю базовую коллекцию и ее работу как один поток.Почему этот код генерирует исключение ConcurrentModificationException?
Tree tree=partition.getTreeofThisPartition();
Set<DzExpressionHostTupel> oldSubtupels=tree.getSubscribers();
Iterator<DzExpressionHostTupel> subiter=oldSubtupels.iterator();
while (subiter.hasNext()){
DzExpressionHostTupel subtupel=subiter.next();
tree.removeSubscriber(subtupel);
}
Возможный дубликат http://stackoverflow.com/questions/1655362/concurrentmodificationexception-despite-using-synchronized – NageN
вы должны использовать метод 'subiter.remove()' вместо 'tree.removeSubscriber (subtupel)'. – NageN
Мне нужно удалить элемент из существующего дерева, где он был добавлен до этого, iterator.remove() не сделает этого. –