我發現了一個關於PriorityQueue的類似問題,那個錯誤是它沒有被正確初始化。我可能有同樣的問題,但我不知道如何正確初始化它!Java:嘗試將對象添加到BlockingQueue時發生NullPointerException?
截至目前,我只是做:
的BlockingQueue myQueue中= NULL;
但只要我嘗試添加一些東西到列表中就會引發異常。
如何正確初始化BlockingQueue?
我發現了一個關於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; //還有其他的實現,特別是使用鏈表並且比數組擴展更好。
BlockingQueue
保持某種類型,例如BlockingQueue<String>
或類似的東西。BlockingQueue
,例如ArrayBlockingQueue<E>
。所以做這樣的事情:
BlockingQueue<MyObject> = new ArrayBlockingQueue<MyObject>();
,你會沒事的。