Выбор ответа Middle java.util.concurrent и виртуальные потоки обновлено
Опасность newFixedThreadPool
Вопрос
Чем опасен Executors.newFixedThreadPool(10) в сервисе под пиковой нагрузкой?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Очередь неограниченная: задачи копятся в памяти, возможен OOM. Внутри LinkedBlockingQueue без ограничения: когда потоки не успевают, задачи копятся бесконечно, ответы приходят всё позже, а память заканчивается.
Варианты ответа
- При пике пул создаёт тысячи потоков, и память кончается на стеках
- Очередь неограниченная: задачи копятся в памяти, возможен OOMправильный ответ
- Пул не переиспользует потоки и создаёт новый на каждую задачу
- Задачи выполняются в случайном порядке, и часть из них теряется
Разбор
Внутри LinkedBlockingQueue без ограничения: когда потоки не успевают, задачи копятся бесконечно, ответы приходят всё позже, а память заканчивается. Тысячи потоков это проблема newCachedThreadPool. Потоки fixed-пул переиспользует, задачи не теряет. Решение: явный ThreadPoolExecutor с ограниченной очередью и политикой отказа.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.