zhulibin2012

jdk8--stream并行流

stream的并行流要理解一个框架如下:

单线程,多线程和并行流对比

package com.atguigu.java8;

import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.stream.LongStream;

import org.junit.Test;

public class TestForkJoin {
    //线程池
    @Test
    public void test1(){
        long start = System.currentTimeMillis();
        
        ForkJoinPool pool = new ForkJoinPool();
        ForkJoinTask<Long> task = new ForkJoinCalculate(0L, 10000000000L);
        
        long sum = pool.invoke(task);
        System.out.println(sum);
        
        long end = System.currentTimeMillis();
        
        System.out.println("耗费的时间为: " + (end - start)); //112-1953-1988-2654-2647-20663-113808
    }
    
    //单线程
    @Test
    public void test2(){
        long start = System.currentTimeMillis();
        
        long sum = 0L;
        
        for (long i = 0L; i <= 10000000000L; i++) {
            sum += i;
        }
        
        System.out.println(sum);
        
        long end = System.currentTimeMillis();
        
        System.out.println("耗费的时间为: " + (end - start)); //34-3174-3132-4227-4223-31583
    }
    
    //并行流
    @Test
    public void test3(){
        long start = System.currentTimeMillis();
        
        Long sum = LongStream.rangeClosed(0L, 10000000000L)
                             .parallel()
                             .sum();
        
        System.out.println(sum);
        
        long end = System.currentTimeMillis();
        
        System.out.println("耗费的时间为: " + (end - start)); //2061-2053-2086-18926
    }

}

 

posted on 2019-02-24 20:27  zhulibin2012  阅读(310)  评论(0编辑  收藏  举报

导航