stream reduce 执行源码简易分析
Posted 芬尼拔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stream reduce 执行源码简易分析相关的知识,希望对你有一定的参考价值。
stream reduce 执行源码简易分析
stream 分为中间操作和最终操作两种,而最终操作只会执行一次,且中间操作执行延迟到最终操作执行时。
stream reduce为规约操作API:
由参数BinaryOperator类泛型特性:1和2reduce规约针对的是一种类型的规约,初始值,集合,规约后的值参数必须一致:
3接口:初始值U的类型与集合元素类型可以不一致,combiner 参数在并行(parallel)操作中组合accumulator计算结果,且combiner需要兼容accumulator,不然并行计算结果有误。
从源码上看,自定义的部分在下图方法中定义:
1为初始值赋值,2为accumulator计算,3为combiner计算,从代码中可以看到1,2,3规约到state变量中。计算逻辑和初始数据封装在ReducingSink对象中:
回到:
evaluate方法根据串并行分别执行各自的逻辑:
在串行逻辑中分别执行了state初始化赋值和accumulator计算,但是没有执行combiner操作,所以combiner对串行操作无效。
并行操作有代理方式执行:底层为forkjoin处理并行的计算:
以上是关于stream reduce 执行源码简易分析的主要内容,如果未能解决你的问题,请参考以下文章