T
- class ReferenceProcessor<T> extends Object implements ReferenceQueuingFactory<T,Referrer<T>>
Modifier and Type | Class and Description |
---|---|
private static class |
ReferenceProcessor.CleanerTask |
private static class |
ReferenceProcessor.CreateThread |
private static class |
ReferenceProcessor.EnqueGarbageTask |
private static class |
ReferenceProcessor.FinalizerTask |
private static class |
ReferenceProcessor.SystemThreadFactory |
private static class |
ReferenceProcessor.ThreadGroupAction |
Modifier and Type | Field and Description |
---|---|
private Collection<Referrer<T>> |
col |
private Object |
colLock |
private static Map<Reference,java.util.concurrent.ScheduledFuture> |
finalizerTasks |
private static java.util.concurrent.ScheduledExecutorService |
garbageCleaner |
private boolean |
gcThreads |
private static ReferenceQueue<Reference> |
phantomQueue |
private RefQueue<T> |
queue |
private java.util.concurrent.locks.Lock |
queueLock |
private boolean |
started |
private Ref |
type |
Constructor and Description |
---|
ReferenceProcessor(Collection<Referrer<T>> col,
Ref type,
RefQueue<T> queue,
boolean gcThreads,
Object lock) |
Modifier and Type | Method and Description |
---|---|
void |
processQueue()
This method was originally intended to process the reference queue
prior to access, however this severely hurts scalability.
|
T |
pseudoReferent(Referrer<T> u) |
Referrer<T> |
referenced(T w,
boolean enque,
boolean temporary) |
private void |
scheduleFinaliserTask(java.util.concurrent.ScheduledFuture task) |
void |
start(long GcInterval)
Register with executor service and finaliser for cleanup.
|
private static final java.util.concurrent.ScheduledExecutorService garbageCleaner
private static final Map<Reference,java.util.concurrent.ScheduledFuture> finalizerTasks
private static final ReferenceQueue<Reference> phantomQueue
private final Collection<Referrer<T>> col
private final Object colLock
private final Ref type
private final java.util.concurrent.locks.Lock queueLock
private final boolean gcThreads
private volatile boolean started
public void start(long GcInterval)
GcInterval
- time interval between scheduled cleaning runs.private void scheduleFinaliserTask(java.util.concurrent.ScheduledFuture task)
public T pseudoReferent(Referrer<T> u)
pseudoReferent
in interface ReferenceQueuingFactory<T,Referrer<T>>
public Referrer<T> referenced(T w, boolean enque, boolean temporary)
referenced
in interface ReferenceQueuingFactory<T,Referrer<T>>
public void processQueue()
ReferenceQueuingFactory
processQueue
in interface ReferenceQueuingFactory<T,Referrer<T>>
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.