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/57817076/

相关文章:

linux - neo4j 控制台失败

linux - 解压缩时如何删除zip文件?

php - 使用 PHP 为订单创建不同税费的汇总表

architecture - 系统设计面试题

java - 来自十六进制数的 NumberFormatException

java - 获取 Unix 线程转储

java - 在后台从java启动selenium服务器

java - 当 PoolingHttpClientConnectionManager 中的 MaxPoolSize 太小时,Apache 的 HttpClient 停止工作

java - Java 中的读取 key

java - 从控制台执行时 System.out.println 不适用于线程