聚合函数

时间:2016-05-04 14:28:01

标签: java parallel-processing java-8 aggregate-functions

我不知道为什么我应该使用聚合函数。 我的意思是,如果提高性能,则假设聚合函数将并行执行。

  

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+" "));

1 个答案:

答案 0 :(得分:2)

如果您使用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);
    }

并使用parallelStreamstream

比较此方法的输出