Java8新特性:并行流与串行流
用 parallel()和sequential()方法来切换
不用并行流:耗时 3115
package com;
import java.time.Duration;
import java.time.Instant;
public class Main1 {
public static void main(String[] args) {
Instant start = Instant.now();
long sum=0;
for (long i = 0; i < 10000000000L; i++) {
sum+=i;
}
Instant end = Instant.now();
System.out.println("用时:" + Duration.between(start,end).toMillis());//3115
}
}
用并行流:
package com;
import java.time.Duration;
import java.time.Instant;
import java.util.stream.LongStream;
public class Main2 {
public static void main(String[] args) {
Instant start = Instant.now();
LongStream.rangeClosed(0,10000000000L)
.parallel() //用并行流
.reduce(0,(a,b)->Long.sum(a,b));
Instant end = Instant.now();
System.out.println("用时:" + Duration.between(start,end).toMillis());//1597
}
}
用并行流耗时1446
用的是parallel ,底层是fork-join