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.ArrayIndexOutOfBoundsExceptionList<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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




