将输出和错误消息打印到控制台

tus*_*are 6 java eclipse

我正在尝试将输出和错误消息打印到控制台.但有时输出的顺序会改变,首先它会输出错误信息,然后打印出简单的信息,任何人都可以帮助我理解为什么会这样发生?输出序列大部分时间都在变化.打印输出没有一致性.我正在使用eclipse IDE,我得到的输出如下.

我试图打印以下代码,

System.out.println("simple message");  
System.err.println("error message");  
Run Code Online (Sandbox Code Playgroud)

预期的结果是这样的:

简单的消息

错误信息

但实际结果如下:

错误信息

简单的消息

Til*_*hcy 2

即使您在写入后刷新流,这些流也会由 Eclipse 中的不同线程读取,并且如果写入几乎同时进行,则读取 stderr 的线程会在 stdout 线程之前执行,即使对 stdout 的相应写入先发生也是如此。

从 Java 1.5 开始,就有了 ProcessBuilder 类,并且可以在 Eclipse 中通过在启动期间将 stderr 重定向到 stdout 来解决这个问题 - 但是 Eclipse 以不同颜色显示 stderr 输出的功能将被破坏。

您可以将您的意见添加到https://bugs.eclipse.org/bugs/show_bug.cgi?id=32205