Помогите Диме помочь помогать помочь помогать

Игрун

23.07.2016


Предопределённые типы пулов потоков из Executors охватывают большинство наиболее часто встречающихся случаев использования, тем не менее приложения могут создавать пулы потоков с индивидуально настраиваемыми свойствами. Предопределённые пулы потоков Executors основаны на классе ThreadPoolExecutor, который можно использовать непосредственно для создания специализированного пула с нестандартными характеристиками. В этом разделе более подробно рассматриваются реализация пулов потоков и различные нюансы их настройки, в том числе формирование конфигурации и расширение функциональности.


Режим функционирования, или поведение пула потоков, зависит от набора свойств, присущих потокам и очереди сообщений, который можно определить и использовать для управления пулом.


Базовый размер пула (параметр corePoolSize) - минимальное число потоков в данном пуле потоков. В действительности игрун потоков начинает работу с нулевым числом потоков, но после достижения базового размера число потоков никогда не становится меньше этого предельного значения. Если задача добавляется в очередь, а число рабочих потоков меньше базового размера пула, будет создан новый поток, даже если существуют пассивные потоки, ожидающие появления задач. Когда число рабочих потоков больше или равно базовому размеру пула, новые потоки создаются, только если очередь полна, то есть состояние очереди становится решающим фактором для создания новых потоков.


Максимальный размер пула (параметр maximumPoolSize) - максимальное число потоков, которые могут действовать параллельно. Задачи, которые добавляются, когда пул достиг максимального размера, будут оставаться в очереди, пока не освободится один из потоков.