--- old/src/java.base/share/classes/jdk/internal/ref/CleanerFactory.java 2016-03-28 16:44:47.197068045 +0200 +++ new/src/java.base/share/classes/jdk/internal/ref/CleanerFactory.java 2016-03-28 16:44:47.096069793 +0200 @@ -27,7 +27,6 @@ import jdk.internal.misc.InnocuousThread; -import java.lang.ref.Cleaner; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.concurrent.ThreadFactory; @@ -39,30 +38,37 @@ public final class CleanerFactory { /* The common Cleaner. */ - private final static Cleaner commonCleaner = Cleaner.create(new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - return AccessController.doPrivileged(new PrivilegedAction<>() { - @Override - public Thread run() { - Thread t = InnocuousThread.newSystemThread("Common-Cleaner", r); - t.setPriority(Thread.MAX_PRIORITY - 2); - return t; - } - }); + private final static ExtendedCleaner commonCleaner = ExtendedCleaner.create( + new ThreadFactory() { + @Override + public Thread newThread(Runnable r) { + return AccessController.doPrivileged(new PrivilegedAction<>() { + @Override + public Thread run() { + Thread t = InnocuousThread.newSystemThread("Common-Cleaner", r); + t.setPriority(Thread.MAX_PRIORITY - 2); + return t; + } + }); + } } - }); + ); /** - * Cleaner for use within system modules. - * - * This Cleaner will run on a thread whose context class loader - * is {@code null}. The system cleaning action to perform in + * ExtendedCleaner for use within system modules. + *

+ * This Cleaner's cleaning loop will run on a thread whose context + * class loader is {@code null}. The system cleaning action to perform in * this Cleaner should handle a {@code null} context class loader. + *

+ * This Cleaner is an {@link ExtendedCleaner} which supports helping + * the cleaner thread from arbitrary application threads. The system cleaning + * action to perform in this Cleaner should also handle being executed by + * arbitrary application thread. * - * @return a Cleaner for use within system modules + * @return an ExtendedCleaner for use within system modules */ - public static Cleaner cleaner() { + public static ExtendedCleaner cleaner() { return commonCleaner; } }