System.out und System.err
-
Hoi,
ich möchte, dass etwas in der Reihenfolge auf der Konsole erscheint, wie ich es ausgeben lasse.
Wenn ich schnell abwechselnd mit System.out und System.err was ausgebe, kommt es oft vor, dass die Ausgaben durchgemischt werden. Wie kann ich sicher stellen, dass eine Ausgabe erst dann getätigt wird, wenn die andere abgeschlossen ist? System.out.flush() funktioniert nicht.
-
probiers mal mit flush()
-
synchronized
(sollte es dabei um Threads gehn)
-
Beide streams flushen und nicht nur einen.
-
Nein, hilft leider nicht.
-
verwendest du threads?
-
Nein. Ich gebe einfach in einer Methode was über out aus, kehre zurück und ne andere Methode gibt was über err aus und das wird dann oft gemischt oder in der falschen Reihenfolge ausgegeben.
Vermutlich könnte ich das mit einer Pause vermeiden, aber das ist ja eigentlich nicht Sinn der Sache.
-
eine lösung weiß ich nicht, aber ich weiß warum das so ist. Vielleicht hilfts dir ja:
System.err ist ein unbuffered stream, dadurch benötigt die ausgabe auch längere zeit -> die ausgabe wird "vermischt".
-
Meinst du? Laut Doku sind bei vom Typ PrintStream. Kann natürlich sein, dass sie beide gebuffert sind, weil PrintStream gebuffert ist. Muss ich mal nachschauen...
-
so habe ich es auf jeden fall gelernt.
Grüße
-
Mit der Logging API log4j gibt es mit der Reihenfolge der Ausgabe garantiert keine Probleme.
-
Hmmm naja, dann passiert aber, dass
prof.kill(this);