1.1 目标
使用for循环,串行Stream流,并行Stream流来对5亿个数字求和。看消耗的时间。


private static final int times = 500000000;long start;@Beforepublic void init() {start = System.currentTimeMillis();}@Afterpublic void destory() {long end = System.currentTimeMillis();System.out.println("消耗时间:" + (end - start));}// 并行的Stream : 消耗时间:137@Testpublic void testParallelStream() {LongStream.rangeClosed(0, times).parallel().reduce(0, Long::sum);}// 串行的Stream : 消耗时间:343@Testpublic void testStream() {// 得到5亿个数字,并求和LongStream.rangeClosed(0, times).reduce(0, Long::sum);}// 使用for循环 : 消耗时间:235@Testpublic void testFor() {int sum = 0;for (int i = 0; i < times; i++) {sum += i;}}
我们可以看到parallelStream的效率是最高的。
Stream并行处理的过程会分而治之,也就是将一个大任务切分成多个小任务,这表示每个任务都是一个操作。
