2013-04-24 176 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);