0

次のように、CPU の半分を使用するように ForkJoinPool を設定しました。

ForkJoinPool forkJoinPool = new ForkJoinPool(
        Runtime.getRuntime().availableProcessors() / 2);

ただし、そこで説明されているマージ ソートなどのジョブを送信すると、プールはマシンの CPU の最大 80% 以上を使用しています。

これは何か期待されていますか?もしそうなら、作業スレッドの数を効果的に制限する方法はありますか?

4

1 に答える 1

1

過剰なスレッドの問題は、初期の Java7 にまでさかのぼります。使用しているバージョンを指定しませんでしたが、Java7 と Java8 の両方に過剰なスレッドに関する同様の問題があります。Java8u40 は、ネストされた呼び出しの過剰な問題のいくつかに対処しましたが、過剰なスピンが犠牲になりました。

私は 2011 年以来、このフレームワークの継続的な批評を書いています

質問に具体的に答えるには: このフレームワークでワーク スレッドの使用を制限する方法はありません。

于 2015-04-13T19:42:21.143 に答える