java parallel stream下的坑

are1年前 ⋅ 1781 阅读

java8 stream流式写法遇到的坑,你们是用:
1.new List().stream()
还是用:
2.new List().parallelStream()
发现项目用90%的情况都是用的parallelStream(),但自己在测试中发现会出现很多异常情况,如:
现象1:老数组复制到新数组,过程中会下标越界异常ArrayIndexOutOfBoundsException(可能需要多次运行)
现象2:老数组复制到新数组,新数组会变多或变少
现象3:老数组复制到新数组,数组中有null对象[未复现]大量使用parallelStream()不怕踩坑吗?

有没有可能问题不在parallelStream,而是你用的数组不是线程安全的 为啥要用parallel,底层用的forkjoin公共池,就怕多线程出问题 @hue 踩过坑,以后只用stream @hue 用这种花里胡哨的api干嘛 就正常写for循环不好嘛 @wawe 同意所说的。并行流容易出问题,因为他把多线程隐藏了,如果是线程不安全的数据会出问题 ParallelStream 我记得自己也就用过一回 场景是查询全国省市县地四级查询大概list size 9w的样子 才用了这个 也没发现快多少 也就快了1s多 、少于1w的数据用这个没太大区别 完全就是装x了

全部评论: 0

    相关推荐