From 79f87d55eb68f4953e0264304a7e13d3dd579770 Mon Sep 17 00:00:00 2001 From: chegar Date: Fri, 3 Apr 2020 17:20:45 +0100 Subject: [PATCH] 8237117: Better ForkJoinPool behavior Reviewed-by: dfuchs, alanb, rhalade, mullan --- .../java/util/concurrent/ForkJoinWorkerThread.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 fa47c22766..26c6db1f22 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(), -- GitLab