Ответ
ThreadPoolExecutor — это гибкая и настраиваемая реализация пула потоков в Java, входящая в состав java.util.concurrent. Он управляет жизненным циклом потоков и очередью задач, оптимизируя создание и использование ресурсов.
Ключевые параметры конструктора:
| Параметр | Назначение |
|---|---|
corePoolSize |
Минимальное количество потоков, которые остаются в пуле, даже если простаивают. |
maximumPoolSize |
Максимальное количество потоков, которое может создать пул. |
keepAliveTime |
Время, которое избыточные (сверх corePoolSize) потоки могут простаивать перед завершением. |
workQueue |
Очередь для хранения задач до их выполнения (напр., LinkedBlockingQueue). |
RejectedExecutionHandler |
Обработчик для задач, которые не могут быть приняты при переполнении очереди и пула. |
Пример создания:
ExecutorService executor = new ThreadPoolExecutor(
2, // corePoolSize
4, // maximumPoolSize
60, TimeUnit.SECONDS, // keepAliveTime
new LinkedBlockingQueue<>(10), // workQueue (емкость 10)
new ThreadPoolExecutor.CallerRunsPolicy() // Политика "выполнить в потоке-вызывателе"
);
// Использование
executor.submit(() -> System.out.println("Task executed by " + Thread.currentThread().getName()));
Типичные сценарии использования:
- Обработка HTTP-запросов в веб-сервере.
- Параллельное выполнение независимых задач (например, обработка файлов).
- Ограничение потребления ресурсов через контроль максимального числа потоков.