当前位置: 首页 > 知识库问答 >
问题:

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

易元青
2023-03-14
  1. 某些内容创建源流
  2. 实现负责提供一个baseStream#parallel()方法,该方法反过来返回一个可以并行运行其操作的流。

虽然已经有人找到了在Stream Framework的并行执行中使用自定义线程池的方法,但我在Java 8 API中找不到任何关于默认的Java 8并行流实现将使用ForkJoinPool#commonPool()的提及。(集合#ParallelStream()、StreamSupport类中的方法,以及API中支持并行的流的其他可能来源,我不知道)。

我能从搜索结果中看到的只有以下几个花絮:

分叉/接合机械的设计是为了使这一过程自动化。

JEP 107:Bulk Data Operations for Collections
几乎直接声明Collection接口的默认方法#ParallelStream()使用fork/join实现自己。但还是没有关于公共游泳池的内容。

并行实现基于Java7中引入的Java.util.concurrency fork/join实现。

因此:集合#ParallelStream()。

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

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

共有1个答案

卜凯旋
2023-03-14

W.R.T.Java8并行流使用FJ框架的文档在哪里?

Afaik(Java1.8U5)在并行流的JavaDoc中没有提到使用了一个通用的ForkJoinPool。

但在http://docs.oracle.com/javase/tutorial/essential/concurrency/ForkJoin.html底部的ForkJoin文档中提到了它

W.R.T.替换线程

您可以查看https://github.com/nurkiewicz/lazyseq,这是一个更像Scala的streams实现--非常好,非常有趣

PS(W.R.T.叉车和溪流)

如果您有兴趣,我想指出,我偶然发现了一些使用FJ池的问题,请参阅,例如。

    null
 类似资料:
  • 问题内容: 这是我对Java 8Stream框架的理解: 东西产生了源溪 该实现负责提供 BaseStream#parallel() 方法,该方法进而返回可以并行运行其操作的Stream。 尽管有人已经找到了一种将自定义线程池与Stream框架的并行执行结合使用的方法,但是我一生无法在Java 8 API中提及默认的Java 8并行Stream实现将使用ForkJoinPool#commonPoo

  • 内容 搭建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 的主要功能