如果我在处理 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,因为它在内部使用迭代器。
Queue<Particle> myQueue = new ConcurrentLinkedQueue<>();
如果您转换为流,则流会生成具有相同效果的拆分器:
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
我不确定如何形成问题..
基本上我有这个代码:
java.util.Queue myQueue;
...
myQueue.stream().filter(particle -> particle instanceof ParticleDigging).forEach(particle -> {
myQueue.add(new ParticleSmoke());
});
现在我想知道它是否会在某个时候抛出 ConcurrentModificationException。
它甚至可以用 .stream() 抛出异常吗?
您可以为队列使用 ConcurrentLinkedQueue 实现。 如果您查看 java 文档,它们不会抛出 concurrentModificationException,因为它在内部使用迭代器。
Queue<Particle> myQueue = new ConcurrentLinkedQueue<>();
如果您转换为流,则流会生成具有相同效果的拆分器:
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}