My System.out.println() and System.err.println() calls aren’t being printed to the console in the order I make them.
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("out");
System.err.println("err");
}
}
This produces:
out
out
out
out
out
err
err
err
err
err
Instead of alternating out and err. Why is this?
They are different streams and are flushed at different times.
If you put
inside your loop, it will work as expected.
To clarify, output streams are cached so all the write goes into this memory buffer. After a period of quiet, they are actually written out.
You write to two buffers, then after a period of inactivity they both are flushed (one after the other).