Kann mir jemand sagen, warum ich immer diese seltsame Ausgabe nach dem Ausführen dieser Schleife habe? Ist das ein Threading-Problem oder was?Seltsame Ausgabe beim Ausführen einer Schleife
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
Das ist interessant. Ich habe anfangs abgelehnt, weil ich dachte, das sei falsch. Ich ging davon aus, dass Java 'System.out' puffert und' System.err' nicht gepuffert ist. Aber wenn ich eine Klasse von der Kommandozeile aus laufe, sehe ich "oeoeoeoeoeoeoee" 'perfekt verschachtelt. Das bedeutet, dass die Anwendung etwas anderes macht. Faszinierend. Danke @MK. +1 – Gray
@Gray Ich denke, Sie haben Recht, dass System.err nicht gepuffert ist, aber ich denke nicht, dass diese sich gegenseitig ausschließen. Ich habe versucht, ein allgemeines Gefühl dafür zu vermitteln, warum diese ineinander übergehen. Ich denke auch, Drucken \ n könnte zu Spülen führen? In diesem Fall wäre das Verhalten von stdout und stderr dasselbe. –
Mein Kommentar stimmte nicht mit dir überein. Ich stimme völlig zu. Standardmäßig wird der PrintStream nicht geleert, wenn er '\ n' sieht. Ich bin mir nicht sicher, wie 'System.out' und' System.err' konfiguriert wurden. – Gray