Java:尝试将对象添加到BlockingQueue时发生NullPointerException?

问题描述:

我发现了一个关于PriorityQueue的类似问题,那个错误是它没有被正确初始化。我可能有同样的问题,但我不知道如何正确初始化它!Java:尝试将对象添加到BlockingQueue时发生NullPointerException?

截至目前,我只是做:

的BlockingQueue myQueue中= NULL;

但只要我尝试添加一些东西到列表中就会引发异常。

如何正确初始化BlockingQueue?

如果你调用null方法,你会得到一个空指针异常。 尝试制作一个新的ArrayBlockingQueue,它实现了接口。

BlockingQueue<E>是一个接口。你需要选择一个特定的实现,接口,如ArrayBlockingQueue<E>,并调用它constructors之一,像这样:

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

如果你不确定什么不同类型的阻塞队列中的JDK存在,看"All Known Implementing Classes"下。

请阅读其也具有示例 http://download.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html

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

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

所以做这样的事情:

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

,你会没事的。