我的代码如下:
private LinkedBlockingQueue<TrackedOperation> operations = new LinkedBlockingQueue<TrackedOperation>(10000);
Iterator<TrackedOperation> it = operations.iterator();
while (it.hasNext()) {
TrackedOperation op = operations.remove();
...
}
我的问题是:
迭代器是否总是指向队列的头部并且是预期的行为?
如果我没有意义,那么我的问题是迭代器的行为是什么?我的操作队列和迭代器在上面的代码中是否一致?
答案 0 :(得分:4)
我在这做什么,
while (!linkedBlockingQueue.isEmpty()) {
linkedBlockingQueue.remove(); //do what you want to with it
}
答案 1 :(得分:0)
你只能在调用it.next()之后调用它.remove()。 it.next()返回的元素将被it.remove()操作删除。
答案 2 :(得分:0)
接受上面的@assylias回答
你通常会在(真实)E e = queue.take();带阻塞队列。然后中断线程或发送一个特殊项目来打破循环