По порядку Middle java.util.concurrent и виртуальные потоки обновлено

Что делает ThreadPoolExecutor с новой задачей

Вопрос

Расставьте проверки ThreadPoolExecutor.execute в правильном порядке.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    Иначе попробовать положить задачу в очередь
  2. 2
    Если потоков меньше corePoolSize, создать новый поток под задачу
  3. 3
    Если очередь полна и потоков меньше maximumPoolSize, создать поток
  4. 4
    Иначе вызвать RejectedExecutionHandler
Показать ответ и разбор

Коротко

Пул сначала растёт до core, потом заполняет очередь и только после этого растёт до max. Поэтому с неограниченной очередью max не используется никогда.

Правильный порядок

  1. 1
    Если потоков меньше corePoolSize, создать новый поток под задачу
  2. 2
    Иначе попробовать положить задачу в очередь
  3. 3
    Если очередь полна и потоков меньше maximumPoolSize, создать поток
  4. 4
    Иначе вызвать RejectedExecutionHandler

Разбор

Пул сначала растёт до core, потом заполняет очередь и только после этого растёт до max. Поэтому с неограниченной очередью max не используется никогда.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме