Найти в Дзене
Java interview

Параллельные стримы в java

Параллельные стримы в java позволяет выполнять операции над элементами последовательности параллельно, то есть в несколько потоков. Это может ускорить выполнение операций в ситуациях, когда операции можно разбить на независимые части и обработать их параллельно.

Параллельные стримы подходят для данных, операции над которыми не зависят друг от друга и могут быть выполнены независимо. Также параллельность стоит использовать на большом количестве элементов, так как обрабатываемые элементы необходимо поделить между потоками, а затем собрать воедино результат каждого выполненного задания. На небольшом количестве элементов это может отрицательно влиять на скорость.

Пример:

Данный код параллельно вычисляет сумму всех элементов списка numbersList.

Parallel Stream использует общий пул потоков. Этот пул потоков обычно имеет размер, равный количеству процессорных ядер на машине - 1. Однако его размер может быть изменен через аргументы запуска JVM:

-Djava.util.concurrent.ForkJoinPool.common.parallelism=4

Так как parallel Stream использует общий пул потоков, может возникнуть потребность в создании изолированного пула. В следующем примере параллельный поток использует собственный ThreadPool для вычисления суммы элементов numbersList:

-2