My System.out.println()
and 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
and err
。为什么是这样?
它们是不同的流,并且在不同的时间被刷新。
如果你把
System.out.flush();
System.err.flush();
在你的循环中,它将按预期工作。
为了澄清,输出流被缓存,因此所有写入都进入该内存缓冲区。经过一段时间的沉寂,它们居然被写出来了。
您写入两个缓冲区,然后在一段时间不活动后,它们都会被刷新(一个接一个)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)