java8新特性lambda表达式02

本文深入研究了Lambda在Java中用于循环处理的效率,对比了单线程与多线程循环的性能表现。通过实验发现,在处理简单操作时,两者效率相近;但在处理复杂数据时,多线程的优势得以体现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上节介绍了lambda的一些新特性,这次再来深入研究一下。例如使用lambda来做循环我们看看其效率。
lambda的循环可以大致分为两种,一种是普通单线程循环,一种是多线程循环,那么我们来看看单线程效率。

public static void each() {
       List<String> list = new ArrayList<String>();

       for (int i = 0; i < 10000; i++) {
           list.add(String.valueOf(i));
       }
       Long startLong = System.currentTimeMillis();
       Long endLong = 0L;
       list.stream().forEach((s) -> {
           System.out.println("lambda表达式的线程;;;" + Thread.currentThread().getId());
       });
       endLong = System.currentTimeMillis();
       System.out.print(endLong - startLong);
   }

来看看结果,可以看出这是一个单线程循环。10000条数据耗时193ms,100000条数据耗时871

lambda表达式的线程;;;1
lambda表达式的线程;;;1
lambda表达式的线程;;;1
193

再来看看咋们的多线程循环

public static void each() {
        List<String> list = new ArrayList<String>();

        for (int i = 0; i < 100000; i++) {
            list.add(String.valueOf(i));
        }
        Long startLong = System.currentTimeMillis();
        Long endLong = 0L;
        startLong = System.currentTimeMillis();
        list.parallelStream().forEach((s) -> {
            System.out.println("lambda表达式的线程;;;" + Thread.currentThread().getId());
        });
        endLong = System.currentTimeMillis();
        System.out.print(endLong - startLong);
    }

不难看出这是一个多线程循环,10000条数据耗时也是接近于单线程,100000条数据耗时864ms,可以看出基本和单线程时毫无区别,但是这说明不了什么问题,因为咋们都是处理了一些比较简单的操作,并没有什么复杂耗时的操作,这样就凸显不了多线程的作用。所以当我们处理一些较为复杂的数据时,这时多线程的效果才能显示出来。

lambda表达式的线程;;;14
lambda表达式的线程;;;14
lambda表达式的线程;;;1
196
18094074-492c390655be58da.jpg
有你的支持,我会更努力哦!!!.jpg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值