< prev index next >

src/java.base/share/classes/jdk/internal/ref/CleanerFactory.java

Print this page

        

*** 25,35 **** package jdk.internal.ref; import jdk.internal.misc.InnocuousThread; - import java.lang.ref.Cleaner; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.concurrent.ThreadFactory; /** --- 25,34 ----
*** 37,47 **** * The cleaner is created on the first reference to the CleanerFactory. */ 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() { --- 36,47 ---- * The cleaner is created on the first reference to the CleanerFactory. */ public final class CleanerFactory { /* The common Cleaner. */ ! private final static ExtendedCleaner commonCleaner = ExtendedCleaner.create( ! new ThreadFactory() { @Override public Thread newThread(Runnable r) { return AccessController.doPrivileged(new PrivilegedAction<>() { @Override public Thread run() {
*** 49,68 **** 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 * this Cleaner should handle a {@code null} context class loader. * ! * @return a Cleaner for use within system modules */ ! public static Cleaner cleaner() { return commonCleaner; } } --- 49,74 ---- t.setPriority(Thread.MAX_PRIORITY - 2); return t; } }); } ! } ! ); /** ! * ExtendedCleaner for use within system modules. ! * <p> ! * 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. + * <p> + * 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 an ExtendedCleaner for use within system modules */ ! public static ExtendedCleaner cleaner() { return commonCleaner; } }
< prev index next >