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