Из javadoc для ThreadPoolExecutor
:
Когда новая задача отправляется в методе execute (java.lang.Runnable) .... Если количество запущенных потоков больше corePoolSize, но меньше maximumPoolSize, новый поток будет создан только в том случае, если очередь заполнена.
Как я могу сделать ThreadPool
, который будет запускать новый поток вместо отправки задачи в очередь в этой ситуации?
Пример:
У меня есть поток с corePoolSize = 5 и maxPoolSize = 10 и неограниченной очередью.
Предположим, потоки corePoolSize сейчас заняты, и прибыла новая задача - пул должен запустить новый поток и выполнить новую задачу.
Предположим, потоки maxPoolSize сейчас заняты, и прибыла новая задача - пул должен сохранить задачу в очереди, а первый свободный поток должен взять эту задачу и выполнить.