This question already has answers here:
Java Stream API: why the distinction between sequential and parallel execution mode?
(4个答案)
3年前关闭。
我不知道为什么要使用聚合函数。
我的意思是,假设如果提高性能,则聚合函数将并行执行。
https://docs.oracle.com/javase/tutorial/collections/streams/parallelism.html
但事实并非如此,根据文档,如果不使用parallelStream()而不是stream(),则代码将不会是并行的,因此
如果没有任何改善,为什么要使用stream()?
这些代码不应该相同吗?
和
并使用
(4个答案)
3年前关闭。
我不知道为什么要使用聚合函数。
我的意思是,假设如果提高性能,则聚合函数将并行执行。
https://docs.oracle.com/javase/tutorial/collections/streams/parallelism.html
但事实并非如此,根据文档,如果不使用parallelStream()而不是stream(),则代码将不会是并行的,因此
如果没有任何改善,为什么要使用stream()?
这些代码不应该相同吗?
//it is not parallel
listOfIntegers.stream()
.forEach( e -> System.out.print(e+" "));
和
//it is parallel
listOfIntegers.parallelStream()
.forEach( e -> System.out.print(e+" "));
最佳答案
如果使用stream
,则将按顺序处理列表中的所有数据,而如果使用parallelStream
,则可能未按顺序处理数据。
考虑方法
static void test(Integer i){
try {
Thread.sleep((long) (1000*Math.random()));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(i);
}
并使用
parallelStream
和stream
比较此方法的输出关于java - 在Java流中聚合函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37030729/
10-10 06:00