În Java 8 şi versiunile anterioare, încărcătorul de clase pentru ForkJoinPool ar fi putut fi moştenit de la firul de execuţie părinte care a invocat ForkJoinPool. Moştenirea încărcătorului de clase poate duce la probleme potenţiale de scurgere de memorie. Începând cu Java 9, încărcătorul de clase ForkJoinPool nu mai moşteneşte încărcătorul de clase de la firul de execuţie apelant. Dacă aplicaţia dumneavoastră rulează într-un mediu cu mai multe fire de execuţie, puteţi avea pare de diferenţe în comportamentul legat de propagarea încărcătorului de clase în contextul firelor de execuţie.
Această regulă este semnalată o dată pe aplicaţie. Regula semnalează aplicaţiile care apelează oricare dintre următoarele metode (inclusiv apeluri la subclase):
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()Notă: Această modificare de comportament se aplică numai dacă nu aţi aranjat deja pentru propagarea încărcătorului de clasă în context de fire de execuţie, cum ar fi cu MicroProfile Context Propagation, Jakarta/Java EE Concurrency sau alte mijloace specifice aplicaţiei.
Pentru mai multe informaţii despre modificările Java SE 9, vedeţi Notele de ediţie Java 9.