System.out.println と System.err.println の出力順序
System.out.println() と System.err を利用する場合.println() は、予期しない動作をする可能性がある別個の出力ストリームであることに注意することが重要です。ご指摘のとおり、これらのストリームからの出力は、呼び出された順序で出力されない可能性があります。
これが発生する理由を理解するには、これらのストリームがキャッシュ メカニズムを採用していることを考慮してください。これらのストリームに書き込むとき、データは一時的にバッファーに保管されます。バッファをフラッシュすると、コンソールへの実際の出力がトリガーされます。ただし、フラッシュのタイミングは System.out と System.err で異なります。
通常、出力ストリームは定期的に、または非アクティブな期間が続いた後にフラッシュされます。この動作により、System.out ステートメントが連続して出現し、続いて System.err ステートメントが同様の方法で出現するという観察された出力順序が発生する可能性があります。
この問題に対処するには、System.out を使用して出力バッファーを明示的にフラッシュします。ループ内の .flush() および System.err.flush()。これにより、書き込みごとに即時フラッシュがトリガーされ、意図したとおりに「out」と「err」が交互に出力されるようになります。
Java プログラムで出力を効率的に管理し、予期しない動作を回避するには、ストリームのキャッシュとフラッシュを理解することが不可欠です。信頼性の高いコンソール出力を確保します。
以上がSystem.out.println() と System.err.println() が呼び出された順序で出力されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。