Выбор ответа Senior Лямбды и Stream API обновлено
Когда parallelStream вредит
Вопрос
В каком случае parallelStream() скорее всего замедлит или сломает код?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Внутри map идёт HTTP-запрос, а сервис и так обслуживает много запросов. Параллельные стримы работают на общем ForkJoinPool.commonPool() с числом потоков около числа ядер.
Варианты ответа
- Внутри
mapидёт HTTP-запрос, а сервис и так обслуживает много запросовправильный ответ - Сумма квадратов для массива из 50 млн int на машине с 16 ядрами
- Фильтрация большого
ArrayListпо простому условию с CPU-нагрузкой - Свёртка большого списка через
reduceс ассоциативной операцией
Разбор
Параллельные стримы работают на общем ForkJoinPool.commonPool() с числом потоков около числа ядер. Блокирующий ввод-вывод занимает эти потоки, и все параллельные стримы и CompletableFuture без своего пула в приложении встают в очередь. Большие массивы с CPU-работой и ассоциативная свёртка как раз хорошие кандидаты на parallel.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что выведет: orElse и orElseGet
Следующий вопрос
Что выведет: ленивость и короткое замыкание