并行流就是执行任务的时候分配给多个线程队列执行,

但是如果某一个队列执行完成,其他队列还在执行,这个时候执行完成的队列就是空闲状态

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());

 

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐