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