tl; dr
Я подозреваю, что вы установили размер пула ядер на ноль или сказали, что время ожидания потоков ядра истекло.
allowCoreThreadTimeOut( true )
To цитата из раздела Keep-alive ThreadPoolExecutor
Javado c:
По умолчанию политика keep-alive применяется только тогда, когда существует больше потоков corePoolSize, но метод allowCoreThreadTimeOut(boolean)
можно использовать и для применения этой политики тайм-аута к основным потокам, если значение keepAliveTime не равно нулю.
Передайте значение true или false этому методу:
[установите] политику, определяющую, могут ли потоки ядра истечь и завершиться, если в течение времени keep-alive не поступит ни одной задачи, и быть заменены, если необходимо, когда появляются новые задачи.
setCorePoolSize( 0 )
Если вы установите нулевой размер основного пула, для всех потоков будет время ожидания. В этом случае настройка allowCoreTheadTimeOut
не имеет значения.
См. Раздел Восстановление этой страницы Javado c:
Вы можете настроить пул для разрешить всем неиспользованным потокам в конечном итоге d ie, установив соответствующее время поддержки активности, используя нижнюю границу потоков с нулевым ядром и / или установив allowCoreThreadTimeOut (логическое значение).