在 Java 8 中,可以设置一个自定义的 forkJoinPool 以供并行流使用,而不是公共池。
forkJoinPool.submit(() -> list.parallelStream().forEach(x ->{...} ))
Run Code Online (Sandbox Code Playgroud)
我的问题是它在技术上是如何发生的?
流无论如何都不知道它已提交到自定义 forkJoinpool,并且无法直接访问它。那么最终如何使用正确的线程来处理流的任务呢?
我尝试查看源代码但无济于事。我最好的猜测是在提交时的某个时刻设置了一些 threadLocal 变量,然后由流稍后使用。如果是这样,为什么语言开发人员会选择这种方式来实现行为,而不是将池依赖注入到流中?
谢谢!