需要一個循環的FIFO緩衝區(如果隊列已滿,總是刪除ealiest項),我們可以使用blockingqueue來實現它嗎?我們是否可以使用blockingqueue來實現循環緩衝區
0
A
回答
1
是的。見ArrayBlockingQueue:
public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
甲界阻塞隊列由 陣列的支持。該隊列命令元素FIFO (先進先出)。 隊列的頭部是那個隊列上最長時間處於 的元素。隊列的尾部 是 在最短時間內排隊的元素。 將新元素插入隊列的尾部 ,隊列檢索 操作獲取隊列頭部 處的元素。
這是一個典型的「有界緩衝」,在 其中固定大小的數組持有由消費者提取生產者和 插入 元件。一旦創建, 的容量不能增加。 嘗試將一個元素放入完整的 隊列將導致放置操作 阻塞;嘗試從空隊列檢索 元素將類似地阻止 。
+1
我的quetsion是隊列滿的時候可以把刪除頭的方法自動插入尾巴嗎? – user496949 2011-04-12 23:38:20
+0
自動:否。但是你可以使用'offer()',如果失敗了,你可以自己移除頭並重試。 – 2011-04-13 00:05:30
'BlockingQueue'只是一個用於多線程模式的'Queue'。爲什麼不只是一個'隊列'? – 2011-04-12 23:26:56
修改問題 – user496949 2011-04-12 23:28:21