System.out.println からのマルチスレッド出力でのインターリービング
マルチスレッド環境では、System.out.println からの出力が複数のスレッドが同時実行される場合、System.out.println(String) メソッドをインターリーブできる
Java API ドキュメントには、System.out または println メソッドのスレッド セーフに関する明示的な情報は提供されていません。したがって、そのように仮定することはできません。
JVM 実装が println にスレッドセーフ関数を利用し、非インターリーブ出力につながる可能性が考えられます。ただし、この動作は、異なる JVM 実装間では保証されません。
出力の非インターリーブを確実にするには、相互排他を手動で強制する必要があります。
public synchronized void safePrintln(String s) { System.out.println(s); }
この方法だけでは不十分であることに注意してください。すべてのコードでこれを使用し、System.out.println(String).
への直接呼び出しを避ける必要があるためです。以上がSystem.out.println() の出力はマルチスレッド Java でインターリーブできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。