如果我在处理 Queue 时将对象添加到 Queue 中,我会得到 ConcurrentModificationException 吗?

Will I get ConcurrentModificationException if I add objects to a Queue as I'm going through it?

我不确定如何形成问题..

基本上我有这个代码:

java.util.Queue myQueue;

...

myQueue.stream().filter(particle -> particle instanceof ParticleDigging).forEach(particle -> {
     myQueue.add(new ParticleSmoke());
});

现在我想知道它是否会在某个时候抛出 ConcurrentModificationException。

它甚至可以用 .stream() 抛出异常吗?

您可以为队列使用 ConcurrentLinkedQueue 实现。 如果您查看 java 文档,它们不会抛出 concurrentModificationException,因为它在内部使用迭代器。

ConcurrentLinkedQueue

Queue<Particle> myQueue = new ConcurrentLinkedQueue<>();

如果您转换为流,则流会生成具有相同效果的拆分器:

default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }