java - System.out.println 和 System.err.println 乱序

标签 java console system

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

相关文章:

Java:如何解压缩内存使用率较低的文件(zip或tar.gz)?

java - Dsun.java2d.trace 是如何工作的

java - 字符串与对象#toString

.net - 团队系统是一个解决方案吗?

Laravel - 事件开始时发送通知

java - 如何检查字符串是否匹配特定格式?

控制台显示中的光标控制

python - 他们如何在 Django 项目中的 python 控制台中运行这些命令?

javascript - console.log 仅在开发模式 Angular 2

Python 不会将所有值返回到系统,而是将其替换为...