< 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 >