Dans les versions Java 8 et antérieures, le chargeur de classe pour ForkJoinPool peut avoir été hérité de l'unité d'exécution parent qui a appelé ForkJoinPool. L'héritage du chargeur de classe peut générer des problèmes de fuite de mémoire. A partir de Java 9, le chargeur de classe ForkJoinPool n'hérite plus du chargeur de classe de l'unité d'exécution appelante. Si votre application s'exécute dans un environnement multiprocessus, il se peut que vous constatiez des différences de comportement concernant la propagation du chargeur de classe de contexte aux unités d'exécution.
Cette règle se déclenche une fois par règle d'application. Elle marque les applications qui appellent l'une des méthodes suivantes (y compris les appels de sous-classes) :
java.util.concurrent.CompletableFuture.runAsync(Runnable runnable)java.util.concurrent.CompletableFuture.thenRunAsync(Runnable runnable)java.util.concurrent.ForkJoinPool.commonPool()java.util.concurrent.ForkJoinTask.fork()java.util.concurrent.ForkJoinTask.invokeAll()Remarque : ce comportement change uniquement si vous n'avez pas déjà organisé la propagation du chargeur de classe de contexte aux unités d'exécution, par exemple par le biais de la spécification MicroProfile Context Propagation, la concurrence Jakarta/Java EE ou d'autres moyens propres à l'application.
Pour plus d'informations sur les modifications apportées dans Java SE 9, voir JDK 9 Release Notes Other Notes.