Java中的BlockingQueue drainTo() 方法及其示例
概述
Java中的BlockingQueue是一个线程安全的队列,它具有阻塞和等待操作的特点,经常被用作线程池任务队列或消息队列。其中,drainTo()方法是一个非常实用的方法,它可以将BlockingQueue中的元素全部取出,并放入另一个集合中。
语法
drainTo()方法的语法如下:
int drainTo(Collection<? super E> c)
它接收一个参数c,表示将队列中的元素取出并存储到c中。方法返回值为取出的元素个数。
参数和返回值
drainTo()方法接收一个Collection类型的参数c,表示取出的元素将被存放在该Collection集合中。
方法的返回值为取出的元素个数。
示例代码
下面是一个使用drainTo()方法的例子。我们将创建一个BlockingQueue队列,并向其中添加一些元素。然后,我们定义一个List集合,并在其中调用drainTo()方法,将队列中的所有元素取出并存储到List集合中。最后,我们输出List集合中的元素。
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.ArrayList;
import java.util.List;
public class TestBlockingQueue {
public static void main(String[] args) {
BlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>();
//向队列中添加元素
for (int i = 1; i <= 5; i++) {
queue.add(i);
}
List<Integer> list = new ArrayList<Integer>();
//将队列中的元素全部取出并存储到List集合中
queue.drainTo(list);
//输出List集合中的元素
for (Integer i : list) {
System.out.println(i);
}
}
}
运行上述代码,输出结果如下:
1
2
3
4
5
结论
在Java中,drainTo()方法是一个非常实用的方法,可以帮助我们将BlockingQueue队列中的元素全部取出,并存储到另一个集合中。这个方法非常适用于一些需要批量处理数据时的场景。