哈哈,废话不多说,上菜:
/**
* 串行流: 所有的数据操作都在一个线程中 通过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
很显然,并行流节约了很多时间。对并行流的底层实现感兴趣的同学可以去看看。