Sobes.tech
Back to questions
Senior
3

Разница между newCachedThreadPool и newFixedThreadPool. Когда использовать каждый?

Companies where asked
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

newFixedThreadPool создаёт пул с фиксированным числом потоков. Если все потоки заняты, новые задачи ставятся в очередь и ждут своей очереди.

newCachedThreadPool создаёт пул, который динамически создаёт новые потоки при необходимости и переиспользует неактивные. Потоки, не использующиеся в течение 60 секунд, завершаются.

Когда использовать:

  • newFixedThreadPool — когда нужно ограничить количество одновременно работающих потоков, например, чтобы контролировать нагрузку на систему или ресурсы.

  • newCachedThreadPool — когда задачи короткие и их количество может сильно варьироваться, нужен быстрый отклик и масштабирование по нагрузке.

Пример:

ExecutorService fixedPool = Executors.newFixedThreadPool(5); // максимум 5 потоков
ExecutorService cachedPool = Executors.newCachedThreadPool(); // динамическое число потоков

Используйте fixedPool для стабильной нагрузки и predictable поведения, cachedPool — для всплесков задач с быстрым выполнением.