blockingQueue.toArray((T[]) Array.newInstance(clazz, 0));
时间: 2024-03-06 21:48:48 浏览: 47
`blockingQueue.toArray((T[]) Array.newInstance(clazz, 0))` 是一种获取 `BlockingQueue` 中所有元素的常见方式之一。它的原理是将 `BlockingQueue` 中的所有元素复制到一个数组中,并返回该数组。
这种方式的优点是可以直接将元素转化成数组,非常简便。同时,由于 `BlockingQueue` 是线程安全的队列,因此在多线程环境下也能保证数据的正确性。但是,这种方式的缺点是需要额外的空间来存储数组,可能会导致内存浪费。
下面是一个使用 `blockingQueue.toArray((T[]) Array.newInstance(clazz, 0))` 的示例代码:
```java
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
public class Main {
public static void main(String[] args) {
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
for (int i = 0; i < 10; i++) {
queue.add(i);
}
Integer[] arr = queue.toArray(new Integer[0]);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
```
在上面的代码中,我们创建了一个 `ArrayBlockingQueue` 对象,并向队列中添加了 10 个元素。然后,我们使用 `blockingQueue.toArray(new Integer[0])` 将 `BlockingQueue` 中的所有元素转换成数组,并遍历数组中的每个元素,将其输出到控制台上。
阅读全文