我的 System.out.println()
和 System.err.println()
调用没有按照我的顺序打印到控制台。
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("out");
System.err.println("err");
}
}
这会产生:
out
out
out
out
out
err
err
err
err
err
而不是交替使用 out
和 err
。这是为什么呢?
最佳答案
它们是不同的流,在不同的时间刷新。
如果你放
System.out.flush();
System.err.flush();
在您的循环中,它将按预期工作。
为了澄清,输出流被缓存,所以所有的写入都进入这个内存缓冲区。经过一段时间的静默,它们实际上被写出来了。
您写入两个缓冲区,然后在一段时间不活动后,它们都被刷新(一个接一个)。
关于java - System.out.println 和 System.err.println 乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1883321/