18

method で新しいタスクが送信され、実行中のスレッドがexecute(java.lang.Runnable)少ないcorePoolSize場合、他のワーカー スレッドがアイドル状態であっても、要求を処理するために新しいスレッドが作成されます。

1) アイドル状態のスレッドがある場合、リクエストを処理するために新しいスレッドを作成する必要があるのはなぜですか?

実行中のスレッドがそれより多いcorePoolSizeが少ないmaximumPoolSize場合、キューがいっぱいになった場合にのみ、新しいスレッドが作成されます。

corePoolSize2)とここの違いがわかりませんmaximumPoolSize。第 2 に、スレッド数が 未満の場合、どのようにしてキューがいっぱいになるのmaximumPoolSizeでしょうか? キューがいっぱいになるのは、スレッドが と等しいかそれ以上の場合のみですmaximumPoolSize。ではない?

4

3 に答える 3

6

コアおよび最大プール サイズ

ThreadPoolExecutor は、 corePoolSize および maximumPoolSize によって設定された境界に従ってプール サイズを自動的に調整します。

method で新しいタスクが送信されexecute(java.lang.Runnable)、実行中のスレッドが corePoolSize よりも少ない場合、他のワーカー スレッドがアイドル状態であっても、要求を処理するために新しいスレッドが作成されます。corePoolSize よりも多く実行中のスレッドが maximumPoolSize よりも少ない場合、キューがいっぱいの場合にのみ新しいスレッドが作成されます。corePoolSize と maximumPoolSize を同じに設定すると、固定サイズのスレッド プールが作成されます。

maximumPoolSize を などの本質的に無制限の値に設定Integer.MAX_VALUEすることで、プールが任意の数の同時タスクに対応できるようになります。通常、コアおよび最大プール サイズは構築時にのみ設定されますが、 および を使用して動的に変更することもできsetCorePoolSize(int)ますsetMaximumPoolSize(int)リンク

于 2014-01-29T22:16:37.280 に答える