0

私たちのプロジェクトでは、Google Guava と Netflix Hystrix ライブラリを使用しています。各ライブラリには、構成可能な独自のスレッドのプールが付属しています。

その影響を考えさせられました。つまり、各ライブラリは独自のスレッド プールを維持しており、もちろん、各ハードウェアには独自の最適なセットアップがあります。

スレッド プールで Guava を 50 に設定し、Hystrix をスレッド プールで 40 に設定するとします。何が起こるでしょうか?彼らは資源をめぐって競争しますか?

4

1 に答える 1

2

Hystrix には詳しくありませんが、Guava の例は次のとおりです。

ListeningExecutorService service =
    MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));

この場合、Guava はスレッド プールをまったく提供していません... スレッド プールを作成するための標準の JDK メソッドを使用しExecutorServiceコード内でスレッド プールを構成し、それを Guava メソッドを使用してラップします。

(うまくいけば)あなたの質問に答えるために、2つの別々のスレッドプールがある場合、それらは実際には別々です...それらはスレッドを共有しません。1 つに 50 のスレッドがあり、もう 1 つに 40 のスレッドがある場合、合計 90 のスレッドがあります。繰り返しになりますが、Hystrix で何をしているのかはわかりませんが、Guava で行っていることと似ている場合 (使用してスレッド プールを作成し、Executors.newFixedThreadPool(n)それを別のものに渡す)、1 つのスレッドを作成するだけで済みます。プールを作成し、両方のライブラリがそれを使用するようにします。この場合、それらはスレッドを共有します。

于 2015-03-10T18:13:41.503 に答える