diff --git a/src/java.base/share/classes/java/util/concurrent/ForkJoinWorkerThread.java b/src/java.base/share/classes/java/util/concurrent/ForkJoinWorkerThread.java index fa47c227665229b1afcc96c791b736e637b30fc6..26c6db1f226ede0e454c7cbeac5dcc235ab5cd53 100644 --- a/src/java.base/share/classes/java/util/concurrent/ForkJoinWorkerThread.java +++ b/src/java.base/share/classes/java/util/concurrent/ForkJoinWorkerThread.java @@ -78,6 +78,11 @@ public class ForkJoinWorkerThread extends Thread { final ForkJoinPool pool; // the pool this thread works in final ForkJoinPool.WorkQueue workQueue; // work-stealing mechanics + /** An AccessControlContext supporting no privileges */ + private static final AccessControlContext INNOCUOUS_ACC = + new AccessControlContext( + new ProtectionDomain[] { new ProtectionDomain(null, null) }); + /** * Creates a ForkJoinWorkerThread operating in the given pool. * @@ -99,6 +104,7 @@ public class ForkJoinWorkerThread extends Thread { ForkJoinWorkerThread(ForkJoinPool pool, ClassLoader ccl) { super("aForkJoinWorkerThread"); super.setContextClassLoader(ccl); + ThreadLocalRandom.setInheritedAccessControlContext(this, INNOCUOUS_ACC); this.pool = pool; this.workQueue = pool.registerWorker(this); } @@ -214,11 +220,6 @@ public class ForkJoinWorkerThread extends Thread { group, "InnocuousForkJoinWorkerThreadGroup"); }}); - /** An AccessControlContext supporting no privileges */ - private static final AccessControlContext INNOCUOUS_ACC = - new AccessControlContext( - new ProtectionDomain[] { new ProtectionDomain(null, null) }); - InnocuousForkJoinWorkerThread(ForkJoinPool pool) { super(pool, ClassLoader.getSystemClassLoader(),