ThreadPoolExecutor doc によると
corePoolSize 以上のスレッドが実行されている場合、Executor は常に、新しいスレッドを追加するよりも要求をキューに入れることを優先します。
実行中のスレッドが corePoolSize より多く、 maximumPoolSize より少ない場合、新しいスレッドはキューがいっぱいの場合にのみ作成されます。
コアサイズよりも多くのスレッドがある場合でも、最大数に達するまでエグゼキューターに新しいスレッドの作成を優先させ、キューイングを開始する方法はありますか? キューが最大サイズに達すると、タスクは拒否されます。ビジーバーストが処理された後、タイムアウト設定が開始され、スレッドがコアサイズまで削除されるとよいでしょう。スロットリングを可能にするためにキューに入れることを好む理由がわかります。ただし、このカスタマイズにより、キューが主にまだ実行されていないタスクのリストとして機能できるようになります。