【发布时间】:2013-04-22 19:02:20
【问题描述】:
我在 IBM JVM、1.6 上获得此 NPE:
java.lang.NullPointerException 在 java.util.concurrent.ConcurrentLinkedQueue.first(ConcurrentLinkedQueue.java:274) 在 java.util.concurrent.ConcurrentLinkedQueue.size(ConcurrentLinkedQueue.java:315) . . .
相关来源显示第 274 行抛出了一个空的“head”成员。搜索用法显示此成员已根据需要设置为新的 node(),但 从不 无效。
怎么可能?我错过了什么?
... 在调试模式下我无法重现此问题。这个队列是从多个线程访问的。
片段(Sun 和 IBM 来源相同,只是 cmets 会稍微改变行号):
Node<E> first() {
for (;;) {
Node<E> h = head;
Node<E> t = tail;
Node<E> first = h.getNext(); // line #274 on IBM, #263 on Sun
...
}
}
【问题讨论】:
-
如果您使用的是 IBM 的 Java,那么您肯定使用的是他们的产品之一(例如 WAS)。因此,您没有支持合同吗?如果是这样,只需向 IBM 提出 PMR,他们有成群的开发人员只是坐在那里等待这样的事情:-)
-
谢谢,确实在用WAS,不过我觉得没关系,想用和丰富社区,不只是IBM……Sun和IBM这门课的源码是相同的(除了移动行号的 cmets)。
-
好吧,一旦 IBM 回复您并回复您,您就可以丰富社区。我认为 IBM 从维护合同中赚取的巨额资金,他们应该修复自己的自己的软件。
标签: java nullpointerexception java.util.concurrent ibm-jre