Solange Sie die OutputStreamVia nicht ändern System.setOut, ist sie threadsicher.
Obwohl es threadsicher ist, können Sie viele Threads so schreiben lassen, System.outdass
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 OutputStreamInstanz -, wird es in den Puffer schreiben und sofort leeren.
Sobald das Schloss OutputStreamfreigegeben 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 PrintStreamdie 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.