Вопрос проверяет понимание параллельной обработки и ее ограничений в Stream API.
parallelStream — это поток, который обрабатывает элементы параллельно с использованием ForkJoinPool. Он не всегда быстрее обычного Stream. Накладные расходы на распараллеливание могут превысить выигрыш. Также многое зависит от характера задачи и окружения. Поэтому parallelStream нужно использовать осознанно.
parallelStream пытается автоматически распараллелить обработку данных.
parallelStream:
использует ForkJoinPool.commonPool
разбивает данные на части
обрабатывает их в нескольких потоках
Количество потоков зависит от числа CPU.
Прирост может отсутствовать из-за:
маленького объема данных
тяжелых операций синхронизации
блокирующих операций
высокой стоимости разбиения задач
Иногда производительность даже падает.
parallelStream плохо подходит для:
I/O операций
задач с зависимостями между элементами
изменяемых общих состояний
Он эффективен для:
CPU-bound задач
больших объемов данных
чистых функций без побочных эффектов
Вывод: parallelStream — не универсальное ускорение, а инструмент с четкой областью применения.