W wersji Java 8 i wcześniejszych podprogram ładujący klasy dla puli ForkJoinPool mógł być dziedziczony z wątku nadrzędnego, który wywołał ForkJoinPool. Dziedziczenie podprogramu ładującego klasy mogło prowadzić do potencjalnych problemów z przeciekiem pamięci. Począwszy od języka Java 9 podprogram ładujący klasy ForkJoinPool nie jest już dziedziczony z wątku wywołującego. Jeśli aplikacja działa w środowisku wielowątkowym, można odnotować różnice w zachowaniu związane z propagacją podprogramu ładującego klasy kontekstu wątku.
Ta reguła oznacza każdą aplikację tylko raz. Reguła powoduje oznaczenie aplikacji, które wywołują dowolną z następujących metod (dotyczy to także wywołań podklas):
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()Uwaga: Ta zmiana działania ma zastosowanie tylko wtedy, gdy nie została jeszcze zorganizowana propagacja podprogramu ładującego klasy kontekstu wątku, na przykład jako propagacja kontekstu MicroProfile, współbieżność Jakarta/Java EE lub inne metody specyficzne dla aplikacji.
Więcej informacji na temat zmian w środowisku Java SE 9 można znaleźć w publikacji Java 9 release notes (Uwagi do wydania środowiska Java 9).