对集合进行并行计算方法选择的建议:stream的并行流,CompletableFuture
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对集合进行并行计算方法选择的建议:stream的并行流,CompletableFuture相关的知识,希望对你有一定的参考价值。
对于集合的并行计算,我们是要使用流(stream)还是CompletableFuture?
如果进行的是计算密集型的操作,并且没有I/O,那么推荐Stream接口,因为实现简单,同时效率也是最高的(如果所 有的线程都是计算密集型的,那就没有必要创建比处理器核数更多的线程)。
反之,如果你并行的工作单元还涉及等待I/O的操作(包括网络连接等待),那么使用CompletableFuture灵活性更 好,你可以根据Nthreads=Ncpu * Ucpu * (1+W/C)这个公式来计算创建线程池的大小。这种情况不使用Stream 的另一个原因是,处理流的流水线中如果发生I/O等待,流的延迟特性会让我们很难判断到底什么时候触发了等待。
下一篇中我会写一些例子来助于理解
Nthreads=Ncpu * Ucpu * (1+W/C)
Nthreads 创建的线程数
Ncpu 处理器的核的数目
Ucpu 期望的CPU利用率(0到1之间)
W/C 等待时间和计算时间的比率
本文出自 “kisszero” 博客,请务必保留此出处http://kisszero.blog.51cto.com/9395417/1899898
以上是关于对集合进行并行计算方法选择的建议:stream的并行流,CompletableFuture的主要内容,如果未能解决你的问题,请参考以下文章