繁体   English   中英

Java:尝试将对象添加到BlockingQueue时出现NullPointerException吗?

[英]Java: NullPointerException when trying to add object to BlockingQueue?

我发现了一个关于PriorityQueue的类似问题,该错误是未正确初始化。 我可能有同样的问题,但是我不知道如何正确初始化它!

到目前为止,我只是这样做:

BlockingQueue myQueue = null;

但这会在我尝试向列表中添加内容时引发异常。

如何正确初始化BlockingQueue?

BlockingQueue<E>是一个接口。 您需要选择该接口的特定实现,例如ArrayBlockingQueue<E> ,并按如下所示调用其构造函数之一:

BlockingQueue<E> myQueue = new ArrayBlockingQueue<E>(20);

如果不确定JDK中存在哪些不同类型的阻塞队列,请查看“所有已知的实现类”下的内容

如果在null上调用任何方法,则将获得null指针异常。 尝试制作一个新的ArrayBlockingQueue来实现该接口。

请阅读javadocs,其中也包含示例http://download.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html

BlockingQueueblockingQueue =新的ArrayBlockingQueue(100); //还有其他实现,尤其是使用链表并且比数组更好地扩展。

  1. 使BlockingQueue保持某种类型,例如BlockingQueue<String>或类似的东西。
  2. 您需要使用BlockingQueue的实现来初始化变量,例如ArrayBlockingQueue<E>

因此,请执行以下操作:

BlockingQueue<MyObject> = new ArrayBlockingQueue<MyObject>();

你会没事的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM