#java #parallel-processing #java-stream
Вопрос:
Например, parallel()
до того, как filter()
Stream.of(...)
.parallel()
.filter(...)
.forEach(...);
и parallel()
после filter()
Stream.of(...)
.filter(...)
.parallel()
.forEach(...);
Влияет ли порядок вызова parallel()
на поток?
Ответ №1:
Не имеет значения, где вы находитесь parallel()
. Поток не оценивается до тех пор, пока не будет вызвана терминальная операция (в вашем случае forEach
).
Из Джавадока:
Возвращает эквивалентный параллельный поток. Может вернуться сам, либо потому, что поток уже был параллельным, либо потому, что базовое состояние потока было изменено на параллельное. Это промежуточная операция.
Единственная ситуация , в которой порядок имеет значение, — это если вы также звоните sequential
, и в этом случае применяется следующее:
Последняя настройка последовательного или параллельного режима применяется к выполнению всего конвейера потока.
Для получения дополнительной информации см. соответствующий Javadoc