以下是我对Java 8的Stream 框架的理解:
- 某些东西创建了源流
- 该实现负责提供一个BaseStream#parallel()方法,该方法又返回一个可以并行运行其操作的 Stream。
虽然有人已经找到了一种将自定义线程池与 Stream 框架的并行执行一起使用的方法,但我终生无法在 Java 8 API 中找到任何提及默认 Java 8 并行 Stream 实现将使用ForkJoinPool#commonPool()的内容。(Collection#parallelStream(),StreamSupport类中的方法,以及我不知道的 API 中其他可能的并行启用流来源)。
我可以从搜索结果中看到的只有这些花絮:
Lambda 的状态:库版本(“引擎盖下的并行性”)
模糊地提到了 Stream 框架和 Fork/Join 机制。Fork/Join 机器旨在使该过程自动化。
JEP 107:集合的批量数据操作
几乎直接声明集合接口的默认方法#parallelStream() 使用 Fork/Join 实现自身。但仍然没有关于普通游泳池。并行实现基于 Java 7 中引入的 java.util.concurrency Fork/Join 实现。
类数组 (Javadoc)
直接多次声明使用公共池。ForkJoin 公共池用于执行任何并行任务。
所以我的问题是:
哪里说ForkJoinPool#commonPool()用于对从 Java 8 API 获得的流进行并行操作?