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()?

这些代码不应该相同吗?

//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);
    }


并使用parallelStreamstream比较此方法的输出

关于java - 在Java流中聚合函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37030729/

10-10 06:00