当前位置: 首页 > 面试题库 >

官方文档在哪里说Java的并行流操作使用fork / join?

刘阳舒
2023-03-14
问题内容

这是我对Java 8Stream框架的理解:

  1. 东西产生了源溪
  2. 该实现负责提供 BaseStream#parallel() 方法,该方法进而返回可以并行运行其操作的Stream。

尽管有人已经找到了一种将自定义线程池与Stream框架的并行执行结合使用的方法,但是我一生无法在Java 8
API中提及默认的Java
8并行Stream实现将使用ForkJoinPool#commonPool()。(Collection#parallelStream(),StreamSupport类中的方法以及我不知道的API中其他可能启用并行的流的源)。

这些只有我能从搜索结果中看到的花絮是:

  • Lambda的状态:图书馆版(“引擎盖下的并行化”)
    模糊地提到了Stream框架和Fork / Join机制。

Fork / Join机械设计用于使此过程自动化

  • JEP 107:集合的批量数据操作
    几乎直接声明了Collection接口的默认方法#parallelStream()使用Fork / Join实现自身。但是,关于通用池仍然一无所获。

并行实现基于Java 7中引入的java.util.concurrency Fork / Join实现。

因此:Collection#parallelStream()。

  • 类数组(Javadoc)
    多次直接声明使用公共池。

ForkJoin公共池用于执行任何并行任务。

所以我的问题是:

哪里说ForkJoinPool#commonPool()用于对从Java8 API获得的流进行并行操作?


问题答案:

在哪里可以证明Java 8并行流使用FJ Framework?

Afaik(Java 1.8u5)在并行流的JavaDoc中没有提到使用常见的ForkJoinPool。

但这是在http://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html底部的ForkJoin文档中提到的。

WRT替换线程池

我的理解是,您可以使用自定义的ForkJoinPool(而不是常用的)(请参阅Java8并行流中的自定义线程池),但不能使用与ForkJoin实现不同的自定义ThreadPool

WRT取代Streams API

您可以签出https://github.com/nurkiewicz/LazySeq,它更像是Scala类的流实现-
非常好,非常有趣

PS(wrt ForkJoin和流)



 类似资料:
  • 某些内容创建源流 实现负责提供一个baseStream#parallel()方法,该方法反过来返回一个可以并行运行其操作的流。 虽然已经有人找到了在Stream Framework的并行执行中使用自定义线程池的方法,但我在Java 8 API中找不到任何关于默认的Java 8并行流实现将使用ForkJoinPool#commonPool()的提及。(集合#ParallelStream()、Stre

  • 内容 搭建etcd集群 搭建etcd网关 在容器内运行etcd集群 配置 加密(TODO) Monitoring 维护 理解失败 灾难恢复 性能 版本 支持平台 额外说明 这些内容相当于是 etcd3 的管理手册,针对的是 etcd3 的管理者(如运维人员)。对于运维人员,需要重点阅读这些内容。 内容来自 github 官网,地址: https://github.com/coreos/etcd/t

  • 我已经搜索了网上的各种文章和堆栈溢出问题,但我不能找到这个完美的答案。有许多问题与此相近,但略有不同。 我们知道Java8Streams API在内部使用Fork-Join池。 现在我的问题是如何使用Fork-Join池来划分流管道中的任务? 假设我们有以下内容: null

  • 我已经使用打包资源并生成。 但是当我升级到Android 24时,我发现。 是否应该使用?我怎么用它?我找不到任何关于它的文件。

  • 我声明枚举为: 然后,如下所示迭代枚举: 我检查了Java API,但找不到values()方法?我很好奇这种方法是从哪里来的? API链接:https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html

  • 译者注: 原英文文档地址为 https://linkerd.io/docs/ 欢迎来到 linkerd! 本文档将帮助您开始使用。 它分为几个主要部分: 概述:以 high-level 的方式介绍 linkerd 的特性,解释其背后的理由,并介绍文档其余内容中使用的重要概念。 开始:提供在各种环境中设置和运行 linkerd 的具体说明。从这里开始快速入门。 特性:涵盖 linkerd 的主要功能