equal
deleted
inserted
replaced
183 * running each top-level task. |
183 * running each top-level task. |
184 */ |
184 */ |
185 static final class InnocuousForkJoinWorkerThread extends ForkJoinWorkerThread { |
185 static final class InnocuousForkJoinWorkerThread extends ForkJoinWorkerThread { |
186 /** The ThreadGroup for all InnocuousForkJoinWorkerThreads */ |
186 /** The ThreadGroup for all InnocuousForkJoinWorkerThreads */ |
187 private static final ThreadGroup innocuousThreadGroup = |
187 private static final ThreadGroup innocuousThreadGroup = |
188 ThreadLocalRandom.createThreadGroup("InnocuousForkJoinWorkerThreadGroup"); |
188 java.security.AccessController.doPrivileged( |
|
189 new java.security.PrivilegedAction<>() { |
|
190 public ThreadGroup run() { |
|
191 ThreadGroup group = Thread.currentThread().getThreadGroup(); |
|
192 for (ThreadGroup p; (p = group.getParent()) != null; ) |
|
193 group = p; |
|
194 return new ThreadGroup(group, "InnocuousForkJoinWorkerThreadGroup"); |
|
195 }}); |
189 |
196 |
190 /** An AccessControlContext supporting no privileges */ |
197 /** An AccessControlContext supporting no privileges */ |
191 private static final AccessControlContext INNOCUOUS_ACC = |
198 private static final AccessControlContext INNOCUOUS_ACC = |
192 new AccessControlContext( |
199 new AccessControlContext( |
193 new ProtectionDomain[] { |
200 new ProtectionDomain[] { |
213 |
220 |
214 @Override // paranoically |
221 @Override // paranoically |
215 public void setContextClassLoader(ClassLoader cl) { |
222 public void setContextClassLoader(ClassLoader cl) { |
216 throw new SecurityException("setContextClassLoader"); |
223 throw new SecurityException("setContextClassLoader"); |
217 } |
224 } |
218 |
|
219 } |
225 } |
220 } |
226 } |