--- old/src/java.base/share/classes/jdk/internal/ref/CleanerImpl.java 2016-03-19 18:10:34.000000000 -0700 +++ new/src/java.base/share/classes/jdk/internal/ref/CleanerImpl.java 2016-03-19 18:10:34.000000000 -0700 @@ -28,10 +28,7 @@ import java.lang.ref.Cleaner; import java.lang.ref.Cleaner.Cleanable; import java.lang.ref.ReferenceQueue; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.concurrent.ThreadFactory; -import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import jdk.internal.misc.InnocuousThread; @@ -41,6 +38,8 @@ * CleanerImpl provides the functionality of {@link java.lang.ref.Cleaner}. */ public final class CleanerImpl implements Runnable { + private final static ThreadFactory THREAD_FACTORY = + new CleanerFactory.InnocuousThreadFactory(); /** * An object to access the CleanerImpl from a Cleaner; set by Cleaner init. @@ -107,7 +106,7 @@ new CleanerCleanable(cleaner); if (threadFactory == null) { - threadFactory = CleanerImpl.InnocuousThreadFactory.factory(); + threadFactory = THREAD_FACTORY; } // now that there's at least one cleaning action, for the cleaner, @@ -311,32 +310,6 @@ } /** - * A ThreadFactory for InnocuousThreads. - * The factory is a singleton. - */ - static final class InnocuousThreadFactory implements ThreadFactory { - final static ThreadFactory factory = new InnocuousThreadFactory(); - - static ThreadFactory factory() { - return factory; - } - - final AtomicInteger cleanerThreadNumber = new AtomicInteger(); - - public Thread newThread(Runnable r) { - return AccessController.doPrivileged(new PrivilegedAction() { - @Override - public Thread run() { - Thread t = new InnocuousThread(r); - t.setPriority(Thread.MAX_PRIORITY - 2); - t.setName("Cleaner-" + cleanerThreadNumber.getAndIncrement()); - return t; - } - }); - } - } - - /** * A PhantomCleanable implementation for tracking the Cleaner itself. */ static final class CleanerCleanable extends PhantomCleanable {