上节介绍了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

有你的支持,我会更努力哦!!!.jpg