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