IBM JVM 1.6でこの NPE を取得しています。
java.lang. java.util.concurrent.ConcurrentLinkedQueue.first( ConcurrentLinkedQueue .java: 274 ) の java.util.concurrent.ConcurrentLinkedQueue.size(ConcurrentLinkedQueue.java:315) でのNullPointerException 。. .
関連するソースは、行番号 274 が null の「head」メンバーをスローすることを示しています。使用法を検索すると、このメンバーは必要に応じて新しい node() に設定されますが、無効化されることはありません。
それはどうしてですか?私は何が欠けていますか?
...デバッグモードではこれを再現できません。このキューは、複数のスレッドからアクセスされます。
スニペット (行番号を少し変更するコメントを除いて、Sun と IBM のソースは同じです):
Node<E> first() {
for (;;) {
Node<E> h = head;
Node<E> t = tail;
Node<E> first = h.getNext(); // line #274 on IBM, #263 on Sun
...
}
}