Stream.parallel()學習小計

今天想了解一下parallel的工做原理,因而看了一個網上的demo,用parallel來實現一個1+2+3+..+n-1+n的操做,由於parallel背後是使用的jdk7才引入的ForkJoinPool,而ForkJoinPool默認會啓動=處理器個數的線程數,好像會變快是否是?java

在個人電腦:工具

4個i7-6500U處理器,12G內存上跑,一開始使用單線程,從1加到100000000,總花費時間是2193ms線程

public static long sequentialSum(long n){
        return Stream.iterate(1l,i->i+1).limit(n).reduce(0l,Long::sum);
    }

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        long l = sequentialSum(100000000);
        long end=System.currentTimeMillis();
        System.out.println(l);
        System.out.println(end-start);
    }

接着在Stream中加入parallel(),而後再跑一下,發現電腦直接就卡死了,而且過了5分鐘以上都沒打印出結果(ps:一開始個人電腦內存就被各類各樣的工具暫用了70%的內存)。code

接着關閉全部應用,從新跑一下,直接沒了40多的內存,過了5分鐘,仍是沒結果內存

相關文章
相關標籤/搜索