誰でもこのループを実行した後にいつもこの奇妙な出力が表示されるのか教えていただけますか?これはスレッドの問題か何ですか?ループ実行時に奇妙な出力が発生する
for(int i=0;i<10;i++){
System.out.println("out: "+i);
System.err.println("err: "+(i+1));
}
- > OUTPUT:
err: 1
out: 0
err: 2
err: 3
err: 4
out: 1
out: 2
out: 3
out: 4
err: 5
out: 5
err: 6
out: 6
err: 7
err: 8
out: 7
out: 8
err: 9
out: 9
err: 10
out: 10
これは興味深いです。私はこれが間違っていると思ったので、最初は下落した。 Javaが 'System.out'をバッファしていて、' System.err'がバッファされていなかったという私の前提でした。しかし、私がコマンドラインからクラスを実行すると、私は ''私たちは完全にインターリーブされています。つまり、何か異なることをしているのはアプリケーションです。魅力的なありがとう@MK。 +1 – Gray
@GrayあなたはSystem.errがバッファリングされていないと思いますが、これらは相互排他的ではないと思います。私はこれらがインターリーブする理由について一般的な感情を与えようとしていました。また、私は\ n印刷がフラッシングを引き起こすかもしれないと思いますか?その場合、stdoutとstderrの動作は同じになります。 –
私のコメントはあなたに同意していませんでした。私は全く同意します。デフォルトでは、PrintStreamは '\ n'が見えるときにはフラッシュされません。 'System.out'と' System.err'がどのように設定されているのかよく分かりません。 – Gray