OutputStreamビアを変更しない限り、System.setOutスレッドセーフです。
スレッドセーフですが、多くのスレッドに次System.outのように書き込むことができます。
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");
読める
1
2
A
3
B
C
他の組み合わせの中で。
だからあなたの質問に答えるために:
書き込みを行うと(インスタンスSystem.outのロックを取得します)OutputStream、バッファに書き込み、すぐにフラッシュします。
ロックが解除されると、OutputStreamがフラッシュされて書き込まれます。のように異なる文字列を結合する場合はありません1A 2B。
あなたの編集に答えるために編集してください:
それはでは起こりませんSystem.out.println。はPrintStream関数全体を同期するため、バッファーがいっぱいになり、アトミックにフラッシュされます。入ってくる新しいスレッドには、作業するための新しいバッファーがあります。