新しい種類のスレッドを実行する場合、スレッドプールを大きくするか、それとも ExecutorService を追加しますか?

StackOverflow https://stackoverflow.com/questions/2825717

質問

考えられるオーバーヘッドに関連する質問があります。 ExecutorServiceJavaでは。

現在の実装では、 ExecutorService A 5スレッドの容量。

  • タイプのスレッドを実行します A.
  • タイプ A スレッドはデータベースの読み取りと書き込みを行います。

さて、次のタイプのスレッド B 追いかけます いくつかの タイプのスレッド A 終わりました。

  • 種類の数 B 実行されるスレッドはその時々によって異なります。
  • タイプ B スレッドはファイルシステム IO (データベースではなく) を実行します。

それで私はすべきですか

  • 新しいものを追加する ExecutorService ハンドルタイプへ B スレッド
  • それとも容量を増やしたほうがいいのでしょうか? ExecutorService A 実行タイプ B それとのスレッドも?

Java に 2 つのオーバーヘッドがあるのではないかと考えています。 ExecutorServices ですが、その一方で、スレッドの総数はいずれの方法でも増加します。それはまったく問題ありませんか?

役に立ちましたか?

解決

2つお勧めします ExecutorServices, 、その後、さまざまな利点を活用できます ExecutorServiceによって提供されます java.util.concurrent パッケージ。

これによりコードが簡単になり、オーバーヘッドは無視できます。

  • ExecutorService a は、固定スレッド プールが 5 つのスレッドに設定されています。
  • ExecutorService b キャッシュされたスレッド プールを使用します。

他のヒント

は5つのスレッドの話をしている、とあなたは、スレッドプールの容量を排出していない場合、私はオーバーヘッドが重要でないのいずれかの方法であるwoulldと言う傾向があるでしょう、そしてあなたはちょうどあなたが最も簡単な経路であると考えるものは何でも行くべき。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top