Solange Sie die OutputStream
Via nicht ändern System.setOut
, ist sie threadsicher.
Obwohl es threadsicher ist, können Sie viele Threads so schreiben lassen, System.out
dass
Thread-1
System.out.println("A");
System.out.println("B");
System.out.println("C");
Thread-2
System.out.println("1");
System.out.println("2");
System.out.println("3");
kann lesen
1
2
A
3
B
C
unter anderen Kombinationen.
Um Ihre Frage zu beantworten:
Wenn Sie in schreiben System.out
- es erhält eine Sperre für die OutputStream
Instanz -, wird es in den Puffer schreiben und sofort leeren.
Sobald das Schloss OutputStream
freigegeben ist , wird das geleert und beschrieben. Es würde keine Instanz geben, in der Sie verschiedene Zeichenfolgen wie verbunden hätten 1A 2B
.
Bearbeiten, um Ihre Bearbeitung zu beantworten:
Das würde mit nicht passieren System.out.println
. Da das PrintStream
die gesamte Funktion synchronisiert, füllt es den Puffer und spült ihn dann atomar. Jeder neue Thread, der hereinkommt, hat jetzt einen neuen Puffer, mit dem er arbeiten kann.