Назад к вопросам
Senior
4
Что произойдёт если corePoolSize=5, maxPoolSize=10, очередь=100 и закинуть сначала 5 заданий, потом ещё 7?
Компании, где спрашивали
Позитив Технолоджис
Ответ от нейросети
sobes.tech AI
При заданных параметрах ThreadPoolExecutor:
- corePoolSize = 5
- maxPoolSize = 10
- очередь (BlockingQueue) = 100
Что произойдет при добавлении сначала 5 заданий, а потом ещё 7:
- Первые 5 заданий сразу запустятся в 5 core-потоках, так как количество активных потоков меньше corePoolSize.
- Следующие 7 заданий (с 6-го по 12-й) будут помещены в очередь, так как corePoolSize уже достигнут, а очередь не заполнена.
- Поскольку очередь не заполнена (вмещает до 100), новые потоки сверх corePoolSize не создаются, даже если maxPoolSize=10.
Итог:
- Активно 5 потоков (core)
- В очереди 7 заданий
- Потоки от 6 до 10 (maxPoolSize) не создаются, так как очередь не переполнена
Только когда очередь заполнится (более 100 задач), и core-потоки заняты, будут создаваться дополнительные потоки до maxPoolSize.