有的时候,在某些场景下,我们需要这么一个队列
1、这个队列是线程安全的
2、来了最新元素我们需要把最新元素放入队列,如果队列满了,我们需要把队尾的元素给remove掉
3、我们需要随机读取这个队列中的一个元素
于是我们可以利用java现有的对象来完成,例如LinkedBlockingQueue
它能保证线程安全,符合第一点
它提供了操作的保证,即当队列满的时候,插入元素会报异常,能保证队列的大小
因此我们可以用while语句来实现第一点的功能
至于第三点,因BlckingQueue实现了Iterable接口,而且它是线程安全地,因此它可以保证迭代的安全性
基于这些分析,这样的队列的实现代码如下
/**
* 以arrayBlockingQueue为父类来构造
*/
public class RandomQueue<E> extends ArrayBlockingQueue<E> {
private static final long serialVe