我的 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/33797917/