Java8中的Stream()与ParallelStream()的区别

简介: Java8中的Stream()与ParallelStream()的区别

Stream

   无状态:指元素的处理不受之前元素的影响;

   有状态:指该操作只有拿到所有元素之后才能继续下去。

   非短路操作:指必须处理所有元素才能得到最终结果;

   短路操作:指遇到某些符合条件的元素就可以得到最终结果,如 A || B,只要A为true,则无需判断B的结果。

ParallelStream

对于ParallelStream,需要知道的是里面的执行是异步的,并且使用的线程池是ForkJoinPool.common,可以通过设置-Djava.util.concurrent.ForkJoinPool.common.parallelism = N来调整线程池的大小;

ParallelStream的作用

Stream具有平行处理能力,处理的过程会分而治之,也就是将一个大任务切分成多个小任务,这表示每个任务都是一个操作,因此像以下的程式片段:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
numbers.parallelStream().forEach(System.out::println);

得到的展示顺序不一定会是1、2、3、4、5、6、7、8、9,而可能是任意的顺序。得到的结论就是parallelStream()每次执行的结果都不相同,与多线程程序中执行的结果类似。如果希望最后顺序是按照原来Stream的数据顺序,那可以调用forEachOrdered()。例如:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
numbers.parallelStream().forEachOrdered(System.out::println);

你得到的展示顺序就是1、2、3、4、5、6、7、8、9。

Java8并行流parallelStream()和stream()的区别就是支持并行执行,提高程序运行效率。但是如果使用不当可能会发生线程安全的问题。

 

其他同类知识点:

1、Java集合Stream类filter的使用;

2、Java中的排序问题(Java8新特性 stream流、stream多字段排序);

 

参考:

https://blog.csdn.net/y_k_y/article/details/84633001

https://blog.csdn.net/zhxdick/article/details/79228605


相关文章
|
5月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
250 1
|
6月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
6月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
346 100
|
6月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
355 101
|
6月前
|
并行计算 Java 大数据
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
351 101
|
6月前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
1097 1
|
6月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
133 0
Java Stream API 的强大功能
|
7月前
|
存储 NoSQL Java
Java Stream API:集合操作与并行处理
Stream API 是 Java 8 提供的集合处理工具,通过声明式编程简化数据操作。它支持链式调用、延迟执行和并行处理,能够高效实现过滤、转换、聚合等操作,提升代码可读性和性能。
|
7月前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
424 188
|
7月前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
330 92