Ответ
Параллельный stream в Java позволяет обрабатывать элементы коллекции одновременно в нескольких потоках, используя ForkJoinPool. Основное отличие от sequential stream — автоматическое распараллеливание операций.
Пример:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.parallelStream()
.mapToInt(Integer::intValue)
.sum();
Особенности:
- Порядок обработки не гарантируется
- Требует потокобезопасных операций
- Может быть медленнее sequential для небольших коллекций из-за накладных расходов
- Использует общий ForkJoinPool (можно переопределить через custom pool)
Лучше применять для CPU-intensive операций над большими данными. Для IO-bound задач лучше использовать CompletableFuture.