2016-06-08 83 views
2

我正在阅读Richard Warburton编写的Java 8书籍。下面是引用我不明白:流中的叶子工作是什么?

让我们假设流框架分手了我们的工作 并行的四核机器上运行:

  1. 我们的数据源分解为四个元素块。

  2. 我们进行叶计算工作在每个线程并行[...]

什么是叶计算工作?它应该是什么意思?

+1

我假设它指的是处理单元,其获得由单个线程处理,而不是被分解成更小的块的最小数据块的工作。 – Eran

回答

7

作者使用树叶类比来解释并行流中的工作细分。

想想整个工作需要以树的形式完成。树干代表整个工作;每个分支代表可以进一步细分的部分工作;每片叶子表示未再细分的工作量。

考虑将8个元素的数组合并排序为例。排序元素0..7是主干。它有两个分支,用于分类范围0..3和4..7。反过来,每个分支有两个叶子来排序两个元素范围。

由于分选两元素范围的工作不再细分,所以它被认为是

Sort tree

+1

尽管排序示例有点让人误解,但它需要一个非平凡的合并步骤(因此,两个非叶节点并行运行,尽管它们不能使用全部四个核心,这一点很重要)。显然,原始资源使用了一个更简单的求和示例。 – Holger

+0

@Holger确实如此。我挑选了排序,以便我的树看起来不像布什:-) – dasblinkenlight

+1

那么,OP没有足够的引用,所以我搜索了原始示例,发现它着眼于细分为“CPU核心数”叶像Stream实现一样,但巧合的是也有四个叶节点,每个叶节点总结1/N个元素,然后有一个微不足道的合并步骤。 ('listOfInteger .parallelStream().mapToInt(i - > i).sum()') – Holger

相关问题