scala.concurrent.forkjoin.ForkJoinPool vs java.util.concurrent.ForkJoinPool

为什么ForkJoinPool是为Scala分叉的?

哪种实施方式以及哪种情况首选?

scala库拥有自己的ForkJoinPool副本的明显原因是scala必须在1.7之前的JVM上运行,而ForkJoinPool仅在Java 1.7中引入。

此外,对内部(scala)使用进行了一些更改,例如:

https://github.com/scala/scala/commit/76e9da2ca4c31daec2b04848c3c2dbad6ecd426e

鉴于scala的版本可能不会给你任何优势(如果你正在编译并运行java 1.7),我会说你自己使用的应该使用java的版本。 至少java的版本是精确记录的并且完全“公开”,而scala版本的状态不清楚(它可能非常适合仅供内部使用)。 但是在某些地方你可能没有任何选择。 例如, ForkJoinTasks有一个forkJoinPool方法,它需要scala的ForkJoinPool版本。 如果有人可以获得/找到scala版本的ForkJoinPool任何官方状态,说明它是真正公开和稳定的,那么我很乐意回复这个建议。