PipelineHelper

PipelineHelper

文档说明

  • 用于执行流管道的辅助类
  • 用于在一个地方捕获所有关于流管道的信息(输出种类、中间操作、流标识、并行 等)

  • PipelineHelper 描述了一个流管道的初始分块,包括它的源、中间操作

  • 和可能额外附加的关于终止(或有状态)操作的信息,该操作跟进上一个由当前 PipelineHelper 描述的中间操作

  • PipelineHelper 会被传递给 evaluateParallel、evaluateSequential,与 opEvaluateParallel 等方法

  • 使其能够使用 PipelineHelper 去访问关于管道的各种信息

方法

  • wrapAndCopyInto(S sink, Spliterator<p_in> spliterator)
    • 将当前 PipelineHelper 描述的管道阶段应用到所提供的 Spliterator,并将结果发送给提供的 Sink

    • 调用 copyInto(wrapSink(Objects.requireNonNull(sink)), spliterator) 方法,并返回 sink
  • wrapSink(Sink<p_out> sink);

    • 接收一个 Sink,此 Sink 本身会接收 PipelineHelper 输出类型的元素

    • 然后使用一个接收输入类型的元素并且实现了所有 PipelineHelper 中定义的中间操作的 Sink 来对其进行包装

    • 然后将结果传递给所提供的 Sink

  • copyInto(Sink<p_in> wrappedSink, Spliterator<p_in> spliterator);

    • 将从 Spliterator 中获取到的元素推到提供的 Sink 中

    • 若流管道知道有“短路”的阶段,就会进行短路判断

    • @implSpec

    • 当前方法符合 Sink 的协议:

      • 先调用 begin 方法

      • 然后 accept 方法

      • 当所有元素推送完毕后,调用 end 方法

 

posted @ 2019-11-03 01:03  飞蛇在水  阅读(382)  评论(0编辑  收藏  举报