In Java 8 und früheren Versionen kann das Klassenladeprogramm für ForkJoinPool vom übergeordneten Thread übernommen werden, der ForkJoinPool aufruft. Die Übernahme des Klassenladeprogramms kann zu potenziellen Problemen mit Speicherlecks führen. Ab Java 9 wird das Klassenladeprogramm für ForkJoinPool nicht mehr vom aufrufenden Thread übernommen. Wenn Ihre Anwendung in einer Multithread-Umgebung ausgeführt wird, bemerken Sie möglicherweise Abweichungen im Verhalten bei der Weitergabe des Klassenladeprogramms für Ihren Threadkontext.
Diese Regel markiert die Situation einmal pro Anwendungsregel. Die Regel markiert Anwendungen, die die folgenden Methoden (einschließlich Unterklassen) aufrufen:
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()Anmerkung: Dieses geänderte Verhalten ist nur zu beobachten, wenn Sie noch keine anderen Vorkehrungen für die Weitergabe des Klassenladeprogramms für Threadkontexte vorgenommen haben, wie z. B. mit MicroProfile Context Propagation, Jakarta/Java EE Concurrency oder anderen anwendungsspezifischen Mitteln.
Weitere Informationen zu den Änderungen in Java SE 9 finden Sie unter Java 9 release notes.