高い同時実行の下でのSystem.out.printlnは、アプリケーションが一時停止する原因

今日genSeqIdメソッドを呼び出すことにより、シリアル番号を取得するために測定を押し、シリアル番号、同時100、16圧力測定機中とどんなに圧力試験、140ワットに達するまでの通話時間の量、OPS直接のこのメソッドは0を落としたことがわかりました次のように具体的に示され:

エンタープライズポンド20190805172354

あなたがはっきりと見ることができるグラフから、全体の崖スタイルのプレゼンテーションOPSが下落しました。

当時あまり考えて、困惑、その後コードのSystem.out.printlnをコメントし、その後、測定された圧力にし、通常に戻りますが見つかりました:

 

エンタープライズポンド20190805172329

図は、問題が発見されていないのために、圧力測定を停止し、億の量まで、見ることができます。

するSystem.out.println源は、後でビットを読み、それが同期多くのと同期するように、その内部動作を、高い並行性の下で仕事を印刷するには適していないことを見出し、従って2つの要求の間の同期待ち操作の必要性をもたらします。

より具体的な手順は、以下を参照してください。https://softwareengineering.stackexchange.com/questions/246534/how-bad-is-it-calling-println-often-than-concatenating-strings-together-and-ca

おすすめ

転載: www.cnblogs.com/scy251147/p/11304570.html