Dans le livre "Java 8 in action" (par Urma, Fusco et Mycroft), ils soulignent que les flux parallèles utilisent en interne le pool de jointure de fourche commun et que, bien que cela puisse être configuré globalement, par ex. using System.setProperty (...), qu'il n'est pas possible de spécifier une valeur pour un seul flux parallèle.Différence entre le flux parallèle et CompletableFuture
J'ai depuis vu le workaround qui implique l'exécution du flux parallèle à l'intérieur d'un ForkJoinPool personnalisé. Plus loin dans le livre, ils ont un chapitre entier consacré à CompletableFuture, durant lequel ils ont une étude de cas où ils comparent les performances respectives de l'utilisation d'un parallelStream VS un CompletableFuture. Il s'avère que leurs performances sont très similaires - ils mettent en évidence la raison pour laquelle ils sont tous deux par défaut en utilisant le même pool commun (et donc le même nombre de threads). Ils continuent à montrer une solution et soutiennent que le CompletableFuture est meilleur dans ce cas, car il peut être configuré pour utiliser un Executor personnalisé, avec une taille de pool de threads au choix de l'utilisateur. Lorsqu'ils mettent à jour la solution pour l'utiliser, les performances sont considérablement améliorées. Cela m'a fait penser - si l'on devait faire la même chose pour la version en flux parallèle en utilisant la solution de contournement mise en évidence ci-dessus, les performances seraient-elles similaires et les deux approches redeviendraient-elles similaires en termes de performances? Dans ce cas, pourquoi choisir le CompletableFuture sur le flux parallèle alors que cela demande plus de travail de la part du développeur.