This question already has answers here:
Java: System.out.println and System.err.println out of order
(7个答案)
4年前关闭。
在程序的开始,我打印出这两行:
Dyvil 1.0.0的Dyvil编译器1.0.0
从“ config.txt”加载配置文件
第一个打印在
从“ config.txt”加载配置文件
Dyvil 1.0.0的Dyvil编译器1.0.0
在Eclipse调试模式下或从Gradle构建脚本运行程序时会发生这种情况(我尚未使用
这里发生了什么?
(7个答案)
4年前关闭。
在程序的开始,我打印出这两行:
Dyvil 1.0.0的Dyvil编译器1.0.0
从“ config.txt”加载配置文件
第一个打印在
System.err
中,第二个打印在System.out
中。这两个println
调用均按上述顺序在main
方法中发生。但是,似乎有时交换了消息:从“ config.txt”加载配置文件
Dyvil 1.0.0的Dyvil编译器1.0.0
在Eclipse调试模式下或从Gradle构建脚本运行程序时会发生这种情况(我尚未使用
java
命令对其进行测试)。注意,绝对不涉及多线程,所以不要告诉我精神错乱的定义。这里发生了什么?
最佳答案
这两个流恰恰是两个不同的流。结果,如果最终将它们合并到某种形式的控制台输出中,那么行出现乱序是完全可行的。System.out
和System.err
都是PrintStream
,因此几乎可以缓冲,因此仅取决于它们何时刷新。
关于java - System.out和.err-回到 future ? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31519672/
10-16 13:07