今天想了解一下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分鐘,仍是沒結果內存