我正在尝试将输出和错误消息打印到控制台.但有时输出的顺序会改变,首先它会输出错误信息,然后打印出简单的信息,任何人都可以帮助我理解为什么会这样发生?输出序列大部分时间都在变化.打印输出没有一致性.我正在使用eclipse IDE,我得到的输出如下.
我试图打印以下代码,
System.out.println("simple message");
System.err.println("error message");
Run Code Online (Sandbox Code Playgroud)
预期的结果是这样的:
简单的消息
错误信息
但实际结果如下:
错误信息
简单的消息
即使您在写入后刷新流,这些流也会由 Eclipse 中的不同线程读取,并且如果写入几乎同时进行,则读取 stderr 的线程会在 stdout 线程之前执行,即使对 stdout 的相应写入先发生也是如此。
从 Java 1.5 开始,就有了 ProcessBuilder 类,并且可以在 Eclipse 中通过在启动期间将 stderr 重定向到 stdout 来解决这个问题 - 但是 Eclipse 以不同颜色显示 stderr 输出的功能将被破坏。
您可以将您的意见添加到https://bugs.eclipse.org/bugs/show_bug.cgi?id=32205
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |