新しい種類のスレッドを実行する場合、スレッドプールを大きくするか、それとも ExecutorService を追加しますか?
-
26-09-2019 - |
質問
考えられるオーバーヘッドに関連する質問があります。 ExecutorService
Javaでは。
現在の実装では、 ExecutorService A
5スレッドの容量。
- タイプのスレッドを実行します
A
. - タイプ
A
スレッドはデータベースの読み取りと書き込みを行います。
さて、次のタイプのスレッド B
追いかけます いくつかの タイプのスレッド A
終わりました。
- 種類の数
B
実行されるスレッドはその時々によって異なります。 - タイプ
B
スレッドはファイルシステム IO (データベースではなく) を実行します。
それで私はすべきですか
- 新しいものを追加する
ExecutorService
ハンドルタイプへB
スレッド - それとも容量を増やしたほうがいいのでしょうか?
ExecutorService A
実行タイプB
それとのスレッドも?
Java に 2 つのオーバーヘッドがあるのではないかと考えています。 ExecutorService
s ですが、その一方で、スレッドの総数はいずれの方法でも増加します。それはまったく問題ありませんか?
解決
2つお勧めします ExecutorServices
, 、その後、さまざまな利点を活用できます ExecutorService
によって提供されます java.util.concurrent
パッケージ。
これによりコードが簡単になり、オーバーヘッドは無視できます。
ExecutorService
a は、固定スレッド プールが 5 つのスレッドに設定されています。ExecutorService
b キャッシュされたスレッド プールを使用します。
他のヒント
は5つのスレッドの話をしている、とあなたは、スレッドプールの容量を排出していない場合、私はオーバーヘッドが重要でないのいずれかの方法であるwoulldと言う傾向があるでしょう、そしてあなたはちょうどあなたが最も簡単な経路であると考えるものは何でも行くべき。
所属していません StackOverflow