public class SynchronizedHardReferenceQueueWithTimeout<T> extends Object implements IHardReferenceQueue<T>
Thread-safe version with timeout for clearing stale references from the
queue. Clearing of stale entries is accomplished when a value is added to the
SynchronizedHardReferenceQueue. The tail of the queue is tested and
any entry on the tail whose age exceeds a timeout is evicted. This continues
until we reach the first value on the tail of the queue whose age is greater
than the timeout. This behavior is enabled if a non-ZERO timeout is
specified. Stales references are also cleared by a background thread.
| Modifier and Type | Class and Description |
|---|---|
static interface |
SynchronizedHardReferenceQueueWithTimeout.IRef<T>
Interface for something wrapping a reference.
|
DEFAULT_NSCAN| Constructor and Description |
|---|
SynchronizedHardReferenceQueueWithTimeout(int capacity,
int nscan,
long timeoutNanos)
Optional timeout.
|
SynchronizedHardReferenceQueueWithTimeout(int capacity,
long timeoutNanos)
Variant with no listener and timeout.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(T ref)
Add a reference to the cache.
|
int |
capacity()
The cache capacity.
|
void |
clear(boolean clearRefs)
Clears the cache (sets the head, tail and count to zero) without
generating eviction notices.
|
boolean |
evict()
Evict the LRU reference.
|
void |
evictAll(boolean clearRefs)
Evict all references, starting with the LRU reference and proceeding to
the MRU reference.
|
boolean |
isEmpty()
True iff the cache is empty.
|
boolean |
isFull()
True iff the cache is full.
|
int |
nscan()
The #of references that are tested on append requests.
|
T |
peek()
The reference at the tail of the queue.
|
int |
size()
The #of references in the cache.
|
static void |
stopStaleReferenceCleaner()
This method may be invoked by life cycle operations which need to tear
down the bigdata environment.
|
long |
timeout()
The timeout (in nanoseconds) for an entry in the queue.
|
public SynchronizedHardReferenceQueueWithTimeout(int capacity,
long timeoutNanos)
capacity - The maximum #of references that can be stored on the cache.
There is no guarantee that all stored references are distinct.timeoutNanos - The timeout (in nanoseconds) for an entry in the queue. When
ZERO (0L), the timeout is disabled.public SynchronizedHardReferenceQueueWithTimeout(int capacity,
int nscan,
long timeoutNanos)
capacity - The maximum #of references that can be stored on the cache.
There is no guarantee that all stored references are distinct.nscan - The #of references to scan from the MRU position before
appended a reference to the cache. Scanning is used to reduce
the chance that references that are touched several times in
near succession from entering the cache more than once. The
#of reference tests trades off against the latency of adding a
reference to the cache.timeoutNanos - The timeout (in nanoseconds) for an entry in the queue. When
ZERO (0L), the timeout is disabled.public final long timeout()
public final int capacity()
IHardReferenceQueuecapacity in interface IHardReferenceQueue<T>public final int nscan()
IHardReferenceQueuenscan in interface IHardReferenceQueue<T>public boolean add(T ref)
IHardReferenceQueueadd in interface IHardReferenceQueue<T>ref - The reference to be added.public void clear(boolean clearRefs)
IHardReferenceQueueclear in interface IHardReferenceQueue<T>clearRefs - When true the references are explicitly set to
null which can facilitate garbage collection.public boolean evict()
IHardReferenceQueueevict in interface IHardReferenceQueue<T>HardReferenceQueueEvictionListenerpublic void evictAll(boolean clearRefs)
IHardReferenceQueueevictAll in interface IHardReferenceQueue<T>clearRefs - When true, the reference are actually cleared from the cache.
This may be false to force persistence of the references in
the cache without actually clearing the cache.public T peek()
IHardReferenceQueuepeek in interface IHardReferenceQueue<T>public boolean isEmpty()
IHardReferenceQueueisEmpty in interface IHardReferenceQueue<T>public boolean isFull()
IHardReferenceQueueisFull in interface IHardReferenceQueue<T>public int size()
IHardReferenceQueuesize in interface IHardReferenceQueue<T>public static final void stopStaleReferenceCleaner()
Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.