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

Pourquoi ForkJoinPool a été créé pour Scala?

Quelle implémentation et pour quel cas est préféré?

La raison évidente pour que la bibliothèque scala ait sa propre copie de ForkJoinPool est que scala doit s’exécuter sur des ForkJoinPool Java antérieures à la version 1.7, et ForkJoinPool n’a été introduit que dans Java 1.7.

En outre, quelques modifications ont été apscopes à l’utilisation interne (scala), telles que:

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

Étant donné que la version de scala ne vous apportera probablement aucun avantage (si vous comstackz et exécutez java 1.7), je dirais que pour votre propre usage, vous devriez probablement utiliser la version de java. Au moins, la version de Java est précisément documentée et entièrement “publique”, tandis que la version de Scala n’est pas claire (elle pourrait très bien être destinée à un usage interne uniquement). Cependant, dans certains endroits, vous n’avez peut-être pas le choix. Par exemple, ForkJoinTasks a une méthode forkJoinPool qui attend la version de ForkJoinPool de ForkJoinPool . Si quelqu’un peut obtenir / trouver un statut officiel pour la version scala de ForkJoinPool indiquant qu’il est vraiment public et stable, alors je me ferai un plaisir de revenir sur ce conseil.