com.google.common.base.internal
Class Finalizer
java.lang.Object
java.lang.Thread
com.google.common.base.internal.Finalizer
- All Implemented Interfaces:
- Runnable
public class Finalizer
- extends Thread
Thread that finalizes referents. All references should implement
com.google.common.base.FinalizableReference
.
While this class is public, we consider it to be *internal* and not part
of our published API. It is public so we can access it reflectively across
class loaders in secure environments.
This class can't depend on other Google Collections code. If we were
to load this class in the same class loader as the rest of
Google Collections, this thread would keep an indirect strong reference
to the class loader and prevent it from being garbage collected. This
poses a problem for environments where you want to throw away the class
loader. For example, dynamically reloading a web application or unloading
an OSGi bundle.
com.google.common.base.FinalizableReferenceQueue
loads this class
in its own class loader. That way, this class doesn't prevent the main
class loader from getting garbage collected, and this class can detect when
the main class loader has been garbage collected and stop itself.
Methods inherited from class java.lang.Thread |
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, googleGetContext0, googleSetContext0, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield |
startFinalizer
public static ReferenceQueue<Object> startFinalizer(Class<?> finalizableReferenceClass,
Object frq)
- Starts the Finalizer thread. FinalizableReferenceQueue calls this method
reflectively.
- Parameters:
finalizableReferenceClass
- FinalizableReference.classfrq
- reference to instance of FinalizableReferenceQueue that started
this thread
- Returns:
- ReferenceQueue which Finalizer will poll
run
public void run()
- Loops continuously, pulling references off the queue and cleaning them up.
- Specified by:
run
in interface Runnable
- Overrides:
run
in class Thread
- See Also:
Thread.start()
,
Thread.stop()
,
Thread.Thread(ThreadGroup, Runnable, String)
getInheritableThreadLocalsField
public static Field getInheritableThreadLocalsField()