3

複数のスレッドを作成していますが、すべてのスレッドが同じプロパティ ファイルを読み取ります (プロパティ ファイルへの書き込み操作は行われません)。同じプロパティ ファイルが複数のスレッドによって複数回読み取られるため、パフォーマンスのオーバーヘッドが発生しますか?

4

2 に答える 2

5

プロパティ ファイルを一度ロードし、すべてのスレッドで同じPropertiesインスタンスを使用することをお勧めします。

一度ロードすると、ディスク アクセスが減少します。

  • このアプリケーションのパフォーマンスの向上
  • システム全体の可用性の向上

複数の読み取りは同時実行の問題ではありません。

didiercのコメントは、ボトルネックの可能性を強調しています。プロパティへの各アクセスは同期されているため、スレッドが値を読み取ると、他のすべてが待機する可能性があります。

これを回避するにPropertiesは、コンストラクターまたはスレッドの初期化での使用を制限することができます。メソッドp.getProperty( XXX )内のループで使用しないでください。Thread.run()

于 2012-11-09T17:12:51.317 に答える
0

答えは「場合による」です。ほとんどの場合、プロパティ ファイルの読み取りに加えて、各スレッドが実行する作業量に依存します。各スレッドがファイルの読み取りに加えて多くの作業を行っても、パフォーマンスはそれほど影響を受けません。

潜在的な正確性の問題についてもっと心配する必要があります。異なるスレッドが異なるプロパティを使用した場合、プログラムは正しく動作しますか? そうでない場合、プログラムには競合の原因となるバグがあります。プログラムの実行中にプロパティ ファイルが変更 (または削除) されると、一部のスレッドが異なるプロパティを使用し、誤った計算が行われる可能性があります。

プロパティ ファイルは、プログラムの構成に使用されます。通常、プログラムは、実際の作業を行う前に、起動直後にすべての構成情報を読み取ります。したがって、構成に問題があると、すぐに失敗する可能性があります。おそらく、スレッドの生成を後で行う実際の作業として扱い、同様に行う必要があります。これにより、プログラムのユーザーは、スレッドごとに 1 つのメッセージではなく、構成内の障害ごとに 1 つのエラー メッセージのみを受け取るようになります。

于 2016-01-20T18:18:26.807 に答える