暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java新特性解读JDK8之并行流parallelStream

227decision 2020-02-07
3930

parallelStream作用

采用多线程可以加快处理集合操作,底层原理是使用线程池ForkJoinPool(后续文章会详细介绍其原理和使用)

stream和parallelStream的区别

  • stream串行流顺序输出,parallelStream乱序输出

  • stream线程安全,parallelStream存在多线程安全问题

    package com.example.streamdemo;


    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.IntStream;


    public class ParallelStreamDemo {


    public static void main(String[] args) {
    List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9);
    //串行流
    list.stream().forEach(obj->System.out.println(obj));
    //并行流
    list.parallelStream().forEach(obj->System.out.println(obj));

        //线程安全问题,运行会抛出java.lang.ArrayIndexOutOfBoundsException
    List<Integer> list2 = new ArrayList<Integer>();
    IntStream.range(0, 100).parallel().forEach(list2::add);
        System.out.println(list2.size());
      }
    }


    使用推荐

    • parallelStream并行不一定比stream串行快,数据量少使用stream可能更快,因为fork/join会消耗性能

    • 尽量使用stream,如果使用parallelStream,则需要使用线程安全集合

    最后修改时间:2020-07-01 13:35:47
    文章转载自227decision,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论