ThreadPoolExecutorのタスク キューのサイズを変更できる必要があります。もちろん、BlockingQueue はサイズの変更をサポートしておらず、ThreadPoolExecutor はキューの変更をサポートしていません。
したがって、私が思いついた方法は、ThreadPoolExecutor.shutdownNow()を使用することです。これにより、まだ実行されていない Runnables のリストが返されます。次に、必要なキュー サイズで新しいエグゼキュータを作成し、すべてのタスクを再送信します。
この問題は、shutdownNow() 呼び出しの時点で進行中のタスクにあります。javadoc からわかる限り、executor は現在タスクを実行しているすべてのスレッドで Thread.interrupt() を呼び出します。タスクが殺されたくありません。この質問は、Thread.interrupt() が効果を発揮しないようにタスクを作成する方法を尋ねる、長々とした方法だったのかもしれません。