Вопрос проверяет понимание накладных расходов потоков и умение проектировать масштабируемые многопоточные приложения.
Thread pool позволяет переиспользовать потоки вместо постоянного создания новых. Это снижает накладные расходы на создание и уничтожение потоков. Пул даёт контроль над количеством одновременно выполняемых задач. Он защищает систему от перегрузки и упрощает управление жизненным циклом потоков. В реальных приложениях thread pool почти всегда предпочтительнее ручного создания потоков.
Создание потока — это дорогая операция:
выделяется память под стек
поток регистрируется в ОС
происходит переключение контекста
new Thread(() -> {
// задача
}).start();
Если так делать часто:
резко растёт число потоков
падает производительность
возможен OutOfMemoryError
Thread pool решает эти проблемы за счёт:
переиспользования потоков
очереди задач
ограничения максимального числа потоков
С thread pool можно:
задать фиксированное количество потоков
управлять очередью задач
корректно завершать выполнение (shutdown)
ExecutorService executor = Executors.newFixedThreadPool(4);
серверные приложения
обработка запросов
фоновые и асинхронные задачи
Thread pool — это безопасный и управляемый способ работы с потоками. Он почти всегда лучше ручного создания потоков.