IntStream, когда мне действительно следует использовать метод sequential () - PullRequest
0 голосов
/ 11 февраля 2020

Когда я делаю это:

IntStream i = IntStream.of(5,6,7,1,2,3,4);
//IntStream o =  i.sequential();
i.forEach(System.out::println);

Я получаю один и тот же ответ, независимо от того, вызываю ли я последовательный или нет. Затем, каковы случаи использования метода sequential ().

Предположим, что я обрабатывая миллионы целочисленных значений на многоядерном компьютере, если только я не вызову sequential (), возможно ли, что jvm попытается выполнить обработку параллельно?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2020

Например, когда у вас есть параллельный поток:

IntStream i = IntStream.of(5, 6, 7, 1, 2, 3, 4);
i.parallel();
i = i.sequential();
i.forEach(System.out::println);

Wil всегда возвращает 5, 6, 7, 1, 2, 3, 4 Но когда вы удаляете i.sequential (), вы можете получить другие результаты, потому что он работает параллельно.

3 голосов
/ 11 февраля 2020

Как указано в javado c из IntStream.of, этот метод возвращает последовательный поток. Таким образом, метод sequential не будет иметь никакого эффекта.

Подробнее о последовательных и параллельных потоках читайте в официальной документации: https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html.

...