Sobes.tech
Back to questions
Senior
3

Что произойдёт если corePoolSize=5, maxPoolSize=10, очередь=100 и закинуть сначала 5 заданий, потом ещё 7?

Companies where asked
Позитив Технолоджис

Answer from AI

sobes.tech AI

При заданных параметрах ThreadPoolExecutor:

  • corePoolSize = 5
  • maxPoolSize = 10
  • очередь (BlockingQueue) = 100

Что произойдет при добавлении сначала 5 заданий, а потом ещё 7:

  1. Первые 5 заданий сразу запустятся в 5 core-потоках, так как количество активных потоков меньше corePoolSize.
  2. Следующие 7 заданий (с 6-го по 12-й) будут помещены в очередь, так как corePoolSize уже достигнут, а очередь не заполнена.
  3. Поскольку очередь не заполнена (вмещает до 100), новые потоки сверх corePoolSize не создаются, даже если maxPoolSize=10.

Итог:

  • Активно 5 потоков (core)
  • В очереди 7 заданий
  • Потоки от 6 до 10 (maxPoolSize) не создаются, так как очередь не переполнена

Только когда очередь заполнится (более 100 задач), и core-потоки заняты, будут создаваться дополнительные потоки до maxPoolSize.