gpt4 book ai didi

java - 声明 LinkedBlockingQueue 时出现 NullPointer 异常

转载 作者:行者123 更新时间:2023-12-02 06:52:45 26 4
gpt4 key购买 nike

这是我的代码。我在构造函数的最后一行遇到空指针异常(workerQueue[i] = new LinkedBlockingQueue(100);):

public class QueueThreadPool {

private BlockingQueue<String>[] workerQueue;
private Thread[] workerThreads;
private int numQueues;
private int numThreads;

public QueueThreadPool(int numThreads, int numQueues) {
this.numQueues = numQueues;
this.numThreads = numThreads;

for(int i=1; i<=numQueues; i++){
workerQueue[i] = new LinkedBlockingQueue<String>(100);
}
}
public static void main(String args[]){
System.out.println("Start...");
new QueueThreadPool(50, 11);
System.out.println("End...");
}

请帮忙!谢谢!!

最佳答案

数组 workerQueue没有实例化您需要执行的操作。

private BlockingQueue<String>[] workerQueue;

workerQueueBlockingQueue<String>[] 的引用类型,而不是对象。

但是您也无法创建 BlockingQueue<String> 的通用数组。相反,创建一个 ListBlockingQueue<String> 。前-

private List<BlockingQueue<String>> workerQueue= new ArrayList<>();

您还可以在构造函数中创建列表对象。

private List<BlockingQueue<String>> workerQueue= new ArrayList<>();
public QueueThreadPool(int numThreads, int numQueues) {
this.workerQueue = new ArrayList<>(numQueues); // <-- initialize the field.
this.numQueues = numQueues;
this.numThreads = numThreads;
...

关于java - 声明 LinkedBlockingQueue<String> 时出现 NullPointer 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17801347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com