< prev index next >

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

Print this page

        

*** 23,48 **** * questions. */ package jdk.internal.ref; import java.lang.ref.Cleaner; /** ! * CleanerFactory provides a Cleaner for use within OpenJDK modules. * 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(); /** ! * Cleaner for use within OpenJDK modules. * ! * @return a Cleaner for use within OpenJDK modules */ public static Cleaner cleaner() { return commonCleaner; } - } --- 23,68 ---- * questions. */ 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; /** ! * CleanerFactory provides a Cleaner for use within system modules. * 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() { ! 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 ! * this Cleaner should handle a {@code null} context class loader. ! * ! * @return a Cleaner for use within system modules */ public static Cleaner cleaner() { return commonCleaner; } }
< prev index next >