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


而不是交替使用outerr。为什么是这样?

最佳答案

它们是不同的流,并在不同的时间被冲洗。

如果你把

System.out.flush();
System.err.flush();


在您的循环中,它将按预期工作。

为了明确起见,将对输出流进行缓存,以便所有写入都进入此内存缓冲区。经过一段时间的安静后,它们实际上被写了出来。

您写入两个缓冲区,然后在一段时间不活动之后将它们都刷新(一个接一个)。

关于java - System.out.println和System.err.println出现故障,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31118733/

10-11 10:31
查看更多