java8中的并行流,封装ForkJoin
并行流就是执行任务的时候分配给多个线程队列执行,但是如果某一个队列执行完成,其他队列还在执行,这个时候执行完成的队列就是空闲状态java8中的并行流,使用的是工作窃取模式,在一个队列的任务执行完成之后,他会去其他没有执行完成的任务队列里面窃取尾部的任务来执行。正常情况下我们计算一个大一点的数,这个耗时三十多秒public void test(){Long num = 100000000000L;l
·
并行流就是执行任务的时候分配给多个线程队列执行,
但是如果某一个队列执行完成,其他队列还在执行,这个时候执行完成的队列就是空闲状态
java8中的并行流,使用的是工作窃取模式,在一个队列的任务执行完成之后,他会去其他没有执行完成的任务队列里面窃取尾部的任务来执行。
正常情况下我们计算一个大一点的数,这个耗时三十多秒
public void test(){
Long num = 100000000000L;
long sum = 0;
Instant start = Instant.now();
for(long x = 0;x<=num;x++){
sum+=x;
}
System.out.println(sum);
Instant end = Instant.now();
System.out.println(Duration.between(start,end).toMillis());
}
用并行流,这个耗时13秒
Instant start = Instant.now();
long reduce = LongStream.rangeClosed(0, 100000000000L).parallel().reduce(0, Long::sum);
Instant end = Instant.now();
System.out.println(reduce);
System.out.println(Duration.between(start,end).toMillis());
更多推荐
所有评论(0)