ThreadPoolExecutor новая тема - PullRequest
       10

ThreadPoolExecutor новая тема

0 голосов
/ 13 апреля 2020

Вот правила Sun для создания потоков в простых терминах:

  1. Если число потоков меньше, чем corePoolSize, создайте новый поток для запуска новой задачи.
  2. Если количество потоков равно (или больше) corePoolSize, поместите задачу в очередь.
  3. Если очередь заполнена, а число потоков меньше, чем maxPoolSize, создайте новый поток для Выполните задачи в.
  4. Если очередь заполнена, а число потоков больше или равно maxPoolSize, отклоните задачу.

Зачем создавать неосновные потоки, когда очередь заполнена? Я не понимаю, почему они сделали это так. Почему бы не создать неосновной поток, когда очередь пуста?

1 Ответ

0 голосов
/ 13 апреля 2020

Если в очереди задач есть место, это означает, что основные потоки способны удовлетворить спрос на обслуживание. Им не нужна помощь от дополнительных потоков, поэтому система не должна создавать дополнительные потоки.

Заполнение очереди задач является признаком того, что основных потоков недостаточно для обработки входящих запросов. Пул потоков пытается облегчить ситуацию, создавая новые потоки.

...