【问题标题】:Queue.Poll() is return null but Queue.size() >0 in java queueQueue.Poll() 返回 null 但 Queue.size() >0 在 java 队列中
【发布时间】:2014-03-01 09:32:51
【问题描述】:

我的代码:

while( Memo.qRcv.size() > 0) {
    MessageReceived msg=Memo.qRcv.poll();
    ...
}

然后我得到了

2014-03-01 11:09:36 DEBUG [Thread-16] (threadQueueSendtoUser.java:163) - Memo.qRcv = null, size = 41590

【问题讨论】:

  • while(Memo.qRcv.size()>0)?
  • 我的意思是你的循环语句不正确
  • 我用了一些其他的方法,但不是更好
  • qRcv 是 Memo 类的公共静态成员吗​​?在您运行此循环之前是否已设置/填充?
  • @LeeTea 到目前为止,您提供的信息很少,无法为您提供帮助。什么是MemoMemo.qRcv?显示记录信息的代码行(在 threadQueueSendtoUser.java 第 163 行)。等等。更好的是创建a minimal but complete example that reproduces the issue 并发布。

标签: java null queue


【解决方案1】:

我通过使用 ConcurrentLinkedQueue http://www.javacodex.com/Concurrency/ConcurrentLinkedQueue-Example 找到了解决方案

这里的问题是我使用 2 个线程来处理一个队列,不应该使用普通队列。有问题我会反馈的

谢谢大家

【讨论】:

  • 您可以使用“普通队列”,只要您对其进行同步或采取其他措施来确保线程安全。
猜你喜欢
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多