< prev index next >

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

Print this page




 307         public void clear() {
 308             throw new UnsupportedOperationException("clear");
 309         }
 310 
 311     }
 312 
 313     /**
 314      * A ThreadFactory for InnocuousThreads.
 315      * The factory is a singleton.
 316      */
 317     static final class InnocuousThreadFactory implements ThreadFactory {
 318         final static ThreadFactory factory = new InnocuousThreadFactory();
 319 
 320         static ThreadFactory factory() {
 321             return factory;
 322         }
 323 
 324         final AtomicInteger cleanerThreadNumber = new AtomicInteger();
 325 
 326         public Thread newThread(Runnable r) {
 327             return AccessController.doPrivileged(new PrivilegedAction<Thread>() {
 328                 @Override
 329                 public Thread run() {
 330                     Thread t = new InnocuousThread(r);
 331                     t.setPriority(Thread.MAX_PRIORITY - 2);
 332                     t.setName("Cleaner-" + cleanerThreadNumber.getAndIncrement());
 333                     return t;
 334                 }
 335             });
 336         }
 337     }
 338 
 339     /**
 340      * A PhantomCleanable implementation for tracking the Cleaner itself.
 341      */
 342     static final class CleanerCleanable extends PhantomCleanable<Cleaner> {
 343         CleanerCleanable(Cleaner cleaner) {
 344             super(cleaner, cleaner);
 345         }
 346 
 347         @Override
 348         protected void performCleanup() {
 349             // no action
 350         }


 307         public void clear() {
 308             throw new UnsupportedOperationException("clear");
 309         }
 310 
 311     }
 312 
 313     /**
 314      * A ThreadFactory for InnocuousThreads.
 315      * The factory is a singleton.
 316      */
 317     static final class InnocuousThreadFactory implements ThreadFactory {
 318         final static ThreadFactory factory = new InnocuousThreadFactory();
 319 
 320         static ThreadFactory factory() {
 321             return factory;
 322         }
 323 
 324         final AtomicInteger cleanerThreadNumber = new AtomicInteger();
 325 
 326         public Thread newThread(Runnable r) {
 327             return AccessController.doPrivileged(new PrivilegedAction<>() {
 328                 @Override
 329                 public Thread run() {
 330                     Thread t = InnocuousThread.newThread(r);
 331                     t.setPriority(Thread.MAX_PRIORITY - 2);
 332                     t.setName("Cleaner-" + cleanerThreadNumber.getAndIncrement());
 333                     return t;
 334                 }
 335             });
 336         }
 337     }
 338 
 339     /**
 340      * A PhantomCleanable implementation for tracking the Cleaner itself.
 341      */
 342     static final class CleanerCleanable extends PhantomCleanable<Cleaner> {
 343         CleanerCleanable(Cleaner cleaner) {
 344             super(cleaner, cleaner);
 345         }
 346 
 347         @Override
 348         protected void performCleanup() {
 349             // no action
 350         }
< prev index next >