繁体   English   中英

遍历linkedBlockingQueue并同时删除元素

[英]iterating over linkedBlockingQueue and removing elements at the same time

我的代码如下:

private LinkedBlockingQueue<TrackedOperation> operations = new LinkedBlockingQueue<TrackedOperation>(10000);
        Iterator<TrackedOperation> it = operations.iterator();
        while (it.hasNext()) {
            TrackedOperation op = operations.remove();
                            ...
        }

我的问题是:

迭代器是否总是指向队列的头部,这是预期的行为吗?

如果我没有道理,那么我的问题是迭代器的行为是什么? 我的操作队列和迭代器在以上代码中是否一致?

我在这里做什么

while (!linkedBlockingQueue.isEmpty()) {
    linkedBlockingQueue.remove(); //do what you want to with it
}

调用it.next()之后,只能调用它。 由it.next()返回的元素是将由it.remove()操作删除的元素。

接受上面的@assylias答案

您通常while(true)E e = queue.take(); 与阻塞队列。 然后中断线程或发送特殊项目以中断循环

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM