Home > Java > javaTutorial > Why Does System.out.println and System.err.println Output Appear Out of Order?

Why Does System.out.println and System.err.println Output Appear Out of Order?

Patricia Arquette
Release: 2024-12-26 07:58:10
Original
920 people have browsed it

Why Does System.out.println and System.err.println Output Appear Out of Order?

Understanding Out-of-Order Printing with System.out.println and System.err.println

When using System.out.println and System.err.println, you might encounter an unexpected behavior where the output from these two methods appears out of order in the console.

Issue:

In the provided code:

public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
        System.out.println("out");
        System.err.println("err");
    }
}
Copy after login

Output:

out
out
out
out
out
err
err
err
err
err
Copy after login

Instead of alternating between "out" and "err," the output shows all "out" lines followed by all "err" lines.

Cause:

This behavior is due to the fact that System.out and System.err are different streams. When you write to these streams, the data is initially buffered. The buffered data is only written to the actual console output at specific times, such as when:

  • The buffer is full.
  • The program terminates.
  • System.out.flush() or System.err.flush() is called.

By default, System.out and System.err are flushed differently. System.out is flushed more frequently than System.err. Therefore, any data written to System.out tends to appear before data written to System.err.

Solution:

To ensure that the output alternates between "out" and "err," you can call System.out.flush() and System.err.flush() inside the loop:

public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
        System.out.println("out");
        System.err.println("err");
        System.out.flush();
        System.err.flush();
    }
}
Copy after login

With this modification, the output will alternate as expected:

out
err
out
err
out
err
out
err
out
err
Copy after login

The above is the detailed content of Why Does System.out.println and System.err.println Output Appear Out of Order?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template