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
任何官方状态,说明它是真正公开和稳定的,那么我很乐意回复这个建议。