Насколько безопасно добавлять элементы в LinkedList
во время итерации?
class Worker {
final LinkedList<Foo> worklist = new LinkedList<>();
public void work() {
Iterator<Foo> iterator = worklist.iterator();
while (iterator.hasNext()) {
Foo foo = iterator.next();
doSomethingWith(foo);
}
}
public void doSomethingWith(Foo foo) {
// do something with foo
// and possibly add one (or more) foo's to the worklist
if (expression) {
worklist.add(new Foo());
}
}
}
Если нет, как можно безопасно и эффективно реализовать такое поведение?
Обратите внимание, что это не о List
, но конкретно о LinkedList
. Если это небезопасно, я спрашиваю об альтернативах.