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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值