有谁知道Java中是否有FIFO队列实现,或者任何其他允许用户设置最大大小并在队列满时自动拒绝任何请求的库?
我看过番石榴队列实现,但据我所知,它会在队列已满时删除队列中的第一个元素,而不是拒绝请求。
大多数内置队列都是这样做的。我建议使用 ArrayBlockingQueue,因为它非常适合有限的大小,但您也可以使用 LinkedBlockingQueue。BlockingDeque(s) 也支持限制。
顺便说一句,如果您使用带有线程的队列,我建议您使用 ExecutorService,因为它将这些组合在一起。
在一个简单的队列上使用装饰器模式,例如:
Queue<String> queue = new LinkedList<String>();
您的包装器代码将确保最大大小被强制拒绝额外的添加。
int size=500;
Queue<String> = new ArrayBlockingQueue<>(size);