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