From 53c4714aab2e072ba18631875dcaa3b2d5d22243 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Thu, 7 Mar 2024 09:44:35 +0000 Subject: [PATCH] 8327501: Common ForkJoinPool prevents class unloading in some cases Reviewed-by: alanb --- .../share/classes/java/util/concurrent/ForkJoinPool.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java b/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java index 4cdafb0a44f..98e3cd2917b 100644 --- a/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java +++ b/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java @@ -1140,9 +1140,12 @@ public class ForkJoinPool extends AbstractExecutorService { boolean isCommon = (pool.workerNamePrefix == null); @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); - if (sm == null) - return new ForkJoinWorkerThread(null, pool, true, false); - else if (isCommon) + if (sm == null) { + if (isCommon) + return new ForkJoinWorkerThread.InnocuousForkJoinWorkerThread(pool); + else + return new ForkJoinWorkerThread(null, pool, true, false); + } else if (isCommon) return newCommonWithACC(pool); else return newRegularWithACC(pool);