4

アイドル スレッドとはどういう意味ですか? そして、それはいつ発生しますか?Context : ThreadPoolExecutor - アイドル スレッドがあっても、corePoolSize が小さい場合は新しいスレッドが作成されると表示されます

4

4 に答える 4

3

このコンテキストでは、アイドル スレッドとは、ThreadPoolExecutor によって所有/保持され、現在 Runnable/Callable を実行していないスレッドです。

作業が TPE に送信され、アイドル スレッドが選択された場合、そのスレッドはアクティブになり、Runnable/Callable を実行します。Runnable/Callable が完了すると、スレッドはアイドル状態に戻ります (ただし、さらに作業があり、TPE がその現在使用可能なスレッドの使用を選択した場合は、すぐに再びアクティブになる可能性があります)。

于 2013-11-05T08:11:54.403 に答える
2

アイドル スレッドとはどういう意味ですか?

Idle thread : ワーカー スレッドがタスクを実行していない場合、ワーカー スレッドはアイドル状態です。

それはいつ発生しますか?

スレッドが現在のタスクの実行を終了するか、実行するタスクがない場合、スレッドはアイドル状態になります。

corePoolSize : 少なくともこれらの多くのスレッドを処理タスクに使用できるようにします。corePoolSize スレッドがアイドル状態の場合、または corePoolSize 制限に達していない場合に、タスクの初期セットの待機時間を短縮します。

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

ThreadPoolExecutor は、corePoolSize (getCorePoolSize() を参照) および maximumPoolSize (getMaximumPoolSize() を参照) によって設定された境界に従って、プール サイズ (getPoolSize() を参照) を自動的に調整します。メソッド execute(java.lang.Runnable) で新しいタスクが送信され、実行中のスレッドが corePoolSize よりも少ない場合、他のワーカー スレッドがアイドル状態であっても、要求を処理するために新しいスレッドが作成されます。corePoolSize より多く実行中のスレッドが maximumPoolSize より少ない場合、新しいスレッドはキューがいっぱいになった場合にのみ作成されます。corePoolSize と maximumPoolSize を同じに設定すると、固定サイズのスレッド プールが作成されます。maximumPoolSize を Integer.MAX_VALUE などの本質的に無制限の値に設定することで、プールが任意の数の同時タスクに対応できるようになります。最も一般的には、

于 2013-11-05T08:21:13.983 に答える
2

これは単に、ThreadPool に実行するタスクがないか、使用可能なタスクよりもアクティブなスレッドが多い場合に、余分なスレッドがアイドル状態になることを意味します。これは、スケジューラーがそれらを使用できないことを意味します (別名、スリープ状態)。

于 2013-11-05T08:12:03.260 に答える
2

スレッド プールのコンテキストでは、それは作成されているが開始されていないことを意味します。ジョブの開始を待っています。つまり、必要なジョブよりも多くのスレッドがある場合でも、新しいスレッドが作成される可能性があり、新しいジョブを送信する必要があるが利用可能なスレッドがない場合には到達しないということです。もちろん、これには限界があります。また、構成によって異なります。

于 2013-11-05T08:14:06.027 に答える