我的代碼如下:迭代的LinkedBlockingQueue,並在同一時間刪除內容
private LinkedBlockingQueue<TrackedOperation> operations = new LinkedBlockingQueue<TrackedOperation>(10000);
Iterator<TrackedOperation> it = operations.iterator();
while (it.hasNext()) {
TrackedOperation op = operations.remove();
...
}
我的問題是:
會迭代器總是指向隊列的頭部,並且是預期行爲?
如果我沒了感覺,那麼我的問題是,什麼是迭代器的行爲?我的操作隊列和迭代器在上面的代碼中是否一致?
什麼的Javadoc說? – Kayaman
您通常會'while(true)E e = queue.take();'帶有阻塞隊列。然後中斷線程或發送特殊項目來打破循環。 – assylias
@assylias ...文檔對「take()」說,檢索並刪除此隊列的頭部,如果有必要,等待元素變爲可用。我不明白等待在這裏意味着什麼。如果隊列爲空,那麼while(queue.take())的行爲是什麼。 – GJain