package com.example.demo.lambdaStreamAPI;
import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
import java.util.stream.LongStream;
/**
* @Description Java8 并行流:底层是基于ForkJoin的
* ForkJoin:它和普通的线程池是有区别的,它要比普通线程池对CPU的利用率要高
*
* @Auther gf.x
* @Date 2020/3/30 14:02
*/
public class ParallelStream {
@Test
public void test1(){
long start = System.currentTimeMillis();
long sum = 0L;
for (long i = 0L; i <= 1000000000L; i++) {
sum += i;
}
System.out.println(sum);
long end = System.currentTimeMillis();
System.out.println("耗费的时间为: " + (end - start)); //333
}
@Test
public void test() {
Instant start = Instant.now();
long parallelReduce = LongStream.rangeClosed(0, 1000000000L)
.parallel() //并行流
.reduce(0, Long::sum);//基于并行流计算
System.out.println(parallelReduce);
Instant end = Instant.now();
System.out.println("消耗时间为:"
+ Duration.between(start, end).toMillis()); //264
}
}