Java8 串行流和并行流效率对比

哈哈,废话不多说,上菜:


/**
 * 串行流: 所有的数据操作都在一个线程中 通过stream()方法获得的都是串行流
 * 并行流: 将数据分成多块,并在不同的线程分别处理每一块的数据,通过 parallelStream()实现
 *
 * 列子:用串行流计算0-2000000的和,用并行流计算0-200000的和
 *
 */
public class LamdbaExpress01 {
    public static void main(String[] args) {
        testStream();
        testParallelStream();

    }

    public static void testStream(){
        long startStream = System.currentTimeMillis();
        long sumStream = LongStream.rangeClosed(0, 2000000).sum();
        System.out.println("串行流总和:"+sumStream);
        long endStream = System.currentTimeMillis();
        System.out.println("总耗费时间:"+(endStream-startStream));
    }

    public static void testParallelStream(){
        long startTime = System.currentTimeMillis();
        long sumStream = LongStream.rangeClosed(0, 2000000).parallel().sum();
        System.out.println("并行流总和:"+sumStream);
        long endTime = System.currentTimeMillis();
        System.out.println("总耗费时间:"+(endTime-startTime));
    }
}

输出结果:

串行流总和:2000001000000
总耗费时间:156
并行流总和:2000001000000
总耗费时间:16

很显然,并行流节约了很多时间。对并行流的底层实现感兴趣的同学可以去看看。

猜你喜欢

转载自blog.csdn.net/LB_Captain/article/details/121479487