Когда новая задача отправляется в методе
execute(java.lang.Runnable)
и выполняется меньше потоковcorePoolSize
, для обработки запроса создается новый поток, даже если другие рабочие потоки простаивают.
1) Почему существует необходимость создания нового потока для обработки запроса, если существуют потоки бездействия?
Если существует более чем
corePoolSize
, но меньше чемmaximumPoolSize
потоков, новый поток будет создан только в том случае, если очередь заполнена.
2) Я не понимаю разницу между corePoolSize
и maximumPoolSize
здесь. Во-вторых, как очередь может быть заполнена, когда потоки меньше maximumPoolSize
? Очередь может быть заполнена только в том случае, если потоки равны или больше, чем maximumPoolSize
. Не так ли?