PriorityQueue条件仅在print语句之后工作

时间:2016-03-03 06:02:51

标签: java priority-queue

我在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语句如何影响以下条件?

感谢您的任何想法!

0 个答案:

没有答案