System.out.println 和 System.err.println 打印顺序不规则
使用 System.out.println 将消息打印到控制台时() 和 System.err.println() 在循环中,您可能会遇到打印消息不符合预期顺序的问题。尽管交替调用 print 方法,输出仍显示一种消息类型后跟另一种消息类型的分组顺序,从而导致混乱。
出现这种现象是因为 System.out 和 System.err 代表不同的输出流。每个流维护自己的缓冲区来缓存打印的字符,直到达到某个阈值或执行刷新操作。刷新操作将缓冲的文本发送到实际的控制台窗口。
在提供的代码片段中:
循环重复将“out”写入System.out,并将“err”写入系统错误。然而,这些流独立地刷新它们的缓冲区。默认情况下,刷新操作会在一定时间后或缓冲区达到阈值时触发。
由于每个流都有自己的缓冲区,因此字符会单独累积。循环完成后,System.out 缓冲区将被刷新,打印所有累积的“out”消息,然后 System.err 缓冲区将被刷新并打印所有“err”消息。这会导致输出模式不均匀。
要纠正此问题并确保消息按照调用顺序打印,您可以使用以下命令显式刷新每个缓冲区:
通过刷新缓冲区,可以强制缓冲的字符立即显示在控制台上,确保一致且符合逻辑的打印顺序。
以上是为什么 System.out.println 和 System.err.println 输出有时会乱序?的详细内容。更多信息请关注PHP中文网其他相关文章!