解析Stream foreach源码
摘要:串行流比较简单,对于parallelStream,站在它背后的是ForkJoin框架。
本文分享自华为云社区《深入理解Stream之foreach源码解析》,作者:李哥技术 。
前言
Stream中的操作可以分为两大类:中间操作与结束操作。
今天要说的foreach是属于结束操作。
Stream流操作从并发上来分类,又可以分为并行流和串行流,今天就来刨根问底的看看吧。
foreach串行流
foreach并行流
从目前来看,parallelStream(并行流)与stream(串行流)的区别仅仅是一个变量而已。别着急,让我们继续往下看。
记住这里的ordered是false,因为是并行流,不可能是有序遍历。continue。
我们来简单分析一下ForEachTask类,它继承于CountedCompleter。
static final class ForEachTask<S, T> extends CountedCompleter<Void> { }