Java 8 Stream Parallel要点

本文介绍了Java中并行流的使用方法及注意事项,包括如何调整并行流的线程数、不同数据源的并行效果对比等。并强调了在小数据量场景下使用并行流可能带来的性能损耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



  1. 方法中若多次转并行转串行,最后一个设置胜出。如以下代码的流会全并行执行: stream.parallel().filter(...).sequential().map(...).parallel().reduce();
  2. 并行流内部使用ForkJoinPool,默认的线程数为处理器的核心数:Runtime.getRuntime().availableProcessors()。
  3. 可以更改默认线程数,方法:System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelise","12")。注意这是全局的属性,会影响所有并行流。一般情况下不建议修改
  4. 特别注意自动装箱和拆箱带来的损耗,这几个流没有装箱拆箱操作:IntStream, LongStream, DoubleStream。
  5. 小数据量时基本没必要使用并行流。
  6. 注意数据来源的可并行可分解性。较好的:ArrayList,IntStream.range;一般的:HashSet,TreeSet; 差的:LinkedList, Stream.iterate。
     



转载于:https://my.oschina.net/jasonli0102/blog/540296

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值