我在java应用程序中遇到了一些令人难以置信的奇怪行为。
这是有问题的循环
while(true)
{
System.out.println("feed message queue is... " + feedMessageQueue.peek());
//feedMessageQueue.peek();
if (this.feedMessageQueue.peek() != null ){
for (String message : feedMessageQueue)
{
System.out.println("Sending message to client: " + message);
out.println(message);
this.feedMessageQueue.remove();
}
}
}//end while
现在,我最初尝试使用if条件if(feedMessageQueue.size()> 0)并且不起作用。
但是,只有当我在while循环下运行print语句时,这个条件才能工作(并且执行for循环)。
我想也许它与peek()方法有关,所以我试着调用它而不是print语句。
我真的更好奇为什么我会看到这样的行为? print语句如何影响以下条件?
感谢您的任何想法!