Queues.drain
Queues.drain(
Queue<E> queue, //需要传输的阻塞队列
Collection<? super E> collection, //将阻塞队列中的元素放入该集合中
int numElements, //从阻塞队列中取多少个放到collection中
long timeout, //设置超时时间
TimeUnit unit //超时时间的单位
);
该方法用于将阻塞队列queue中,取numElements个元素放到集合collection中,当队列中一直取不到规定的数据量的时候,超出timeout的数值,则直接使用collection
用法样例:
之前的使用是常规的阻塞队列的使用
offer、put
put、take
的使用
现在呢,我们有了新的方式,如下:
//声明一个阻塞队列
public static BlockingQueue<PeopleInfo> dataQueue = new LinkedBlockingDeque<>(2048);
ArrayList<PeopleInfo> arrayList = new ArrayList<>();
Queues.drain(
dataQueue,
arrayList,
100,
60,
TimeUnit.SECONDS
);