ホームページ >Java >&#&チュートリアル >System.out.println() の出力はマルチスレッド Java でインターリーブできますか?

System.out.println() の出力はマルチスレッド Java でインターリーブできますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-03 17:29:11303ブラウズ

Can System.out.println() Output Be Interleaved in Multithreaded Java?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。