16

次のようにスレッドの数を指定して、Executors.newScheduledThreadPool()を作成するために使用しています。ScheduledExecutorService

int corePoolSize = 42;
ScheduledExecutorService foo = Executors.newScheduledThreadPool(corePoolSize);

JavaDocs によると、corePoolSize引数セット

アイドル状態であっても、プールに保持するスレッドの数。

これは、キャッシュされたスレッド プールと同様に、このExecutorService実装が必要に応じて複数のスレッドを作成する可能性があることを意味しますか?corePoolSize

4

2 に答える 2

14

いいえ。正解は「いいえ」です。ScheduledExecutorService は新しいスレッドを生成しません。

こちらの回答をご覧ください

于 2012-07-26T22:17:25.510 に答える
6

これは、この ExecutorService 実装が必要に応じて複数のcorePoolSizeスレッドを作成する可能性があることを意味しますか?

はい、まさにその通りです。の存在理由は、corePoolSizeスレッド作成の費用です。エグゼキュータ サービスで多数の短期間のタスクを起動することが予想される場合、特定の時点で多数のアイドルスレッドが見つかることが予想される場合があります。

これらのスレッドが死ぬのではなく、非常に短い時間の後に新しく作成されたスレッドに置き換えられるだけで、corePoolSize常に多くの回転するスレッドが存在することが保証されます。

于 2012-06-25T21:13:52.440 に答える