2013-04-24 170 views
0

有沒有人知道在Java中是否有FIFO隊列實現,或任何其他允許用戶設置最大大小的庫,並在隊列滿時自動拒絕任何請求?Java FIFO隊列實現

我已經看過番石榴隊列的實現,但是從我所看到的它將在隊列滿時刪除隊列中的第一個元素,而不是拒絕請求。

+0

[BlockingQueue的](http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html) – 2013-04-24 19:39:44

+0

哪個番石榴隊列執行? – 2013-04-24 22:35:44

回答

1

大部分內置隊列都是這樣做的。我建議使用ArrayBlockingQueue,因爲這對於大小有限的天生適合,但您也可以使用LinkedBlockingQueue。 BlockingDeque(s)也支持一個限制。

順便說一句如果你正在使用一個線程隊列,我建議你使用一個ExecutorService,因爲它將它們合併爲一個。

+0

我看過ArrayBlockingQueue,但似乎無法找到設置大小的方法。你知道我能找到這個嗎? – user1899174 2013-04-24 19:57:48

+1

沒有給它一個容量就無法創建ArrayBlockingQueue。試試創建一個。 – 2013-04-24 20:00:57

0

在一個簡單的隊列使用Decorator模式,如:
Queue<String> queue = new LinkedList<String>();

你的包裝代碼將確保最大尺寸被強制拒絕額外的補充。

0
int size=500; 
Queue<String> = new ArrayBlockingQueue<>(size);