|
Groovy 1.7.0 | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.groovy.runtime.metaclass.MemoryAwareConcurrentReadMap
class MemoryAwareConcurrentReadMap extends Object
This Map is a stripped down version of ConcurrentReaderHashMap with small modifications here and there. It is no full Map, it does have put/get/remove, but no iterators. This map is intended to hold values and keys as SoftReference. If one of value or key are removed, so will be complete entry. This map will not use the equals method to compare keys, think of it as a IdentityHashMap with features of concurrency and memory aware caching. As ConcurrentReaderHashMap also does this implementation prefer read operations and tries not to lock if possible. SoftReferenced values are only removed from the map if the map goes into a synchronization block on this. This may affect reads, but only in rare cases.
Nested Class Summary | |
---|---|
class |
MemoryAwareConcurrentReadMap.BarrierLock
A Serializable class for barrier lock * |
class |
MemoryAwareConcurrentReadMap.DummyRef
A dummy to replace the SoftReference if needed |
class |
MemoryAwareConcurrentReadMap.Entry
ConcurrentReaderHashMap collision list entry. |
interface |
MemoryAwareConcurrentReadMap.Reference
Reference class used to support get() |
class |
MemoryAwareConcurrentReadMap.SoftRef
A SoftReference representing a key or value of the map. |
Field Summary | |
---|---|
static int |
DEFAULT_INITIAL_CAPACITY
The default initial number of table slots for this table (32). |
static float |
DEFAULT_LOAD_FACTOR
The default load factor for this table (1.0). |
protected BarrierLock |
barrierLock
Lock used only for its memory effects. |
protected int |
count
The total number of mappings in the hash table. |
protected Object |
lastWrite
field written to only to guarantee lock ordering. |
protected float |
loadFactor
The load factor for the hash table. |
protected Entry[] |
table
The hash table data. |
protected int |
threshold
The table is rehashed when its size exceeds this threshold. |
Constructor Summary | |
MemoryAwareConcurrentReadMap()
|
Method Summary | |
---|---|
def
|
MemoryAwareConcurrentReadMap(int initialCapacity, float loadFactor)
Constructs a new, empty map with the specified initial capacity and the specified load factor. |
def
|
MemoryAwareConcurrentReadMap(int initialCapacity)
Constructs a new, empty map with the specified initial capacity and default load factor. |
def
|
MemoryAwareConcurrentReadMap()
Constructs a new, empty map with a default initial capacity and load factor. |
void
|
clear()
Removes all mappings from this map. |
protected boolean
|
eq(Object x, Object y)
Check for referential equality, null allowed |
Object
|
get(Object key)
Returns the value to which the specified key is mapped in this table. |
protected Entry[]
|
getTableForReading()
Get ref to table; the reference and the cells it accesses will be at least as fresh as from last use of barrierLock |
boolean
|
isEmpty()
Returns true if this map contains no key-value mappings. |
Object
|
put(Object key, Object value)
Maps the specified |
protected void
|
recordModification(Object x)
Force a memory synchronization that will cause all readers to see table. |
protected void
|
rehash()
Rehashes the contents of this map into a new table with a larger capacity. |
Object
|
remove(Object key)
Removes the key (and its corresponding value) from this table. |
int
|
size()
Returns the number of key-value mappings in this map. |
protected Object
|
sput(Object key, Object value, int hash)
Continuation of put(), called only when synch lock is held and interference has been detected. |
protected Object
|
sremove(Object key, int hash)
Continuation of remove(), called only when synch lock is held and interference has been detected. |
Methods inherited from class Object | |
---|---|
wait, wait, wait, hashCode, getClass, equals, toString, notify, notifyAll |
Field Detail |
---|
static final int DEFAULT_INITIAL_CAPACITY
static final float DEFAULT_LOAD_FACTOR
protected final BarrierLock barrierLock
protected int count
protected Object lastWrite
protected float loadFactor
protected Entry[] table
protected int threshold
Constructor Detail |
---|
MemoryAwareConcurrentReadMap()
Method Detail |
---|
public def MemoryAwareConcurrentReadMap(int initialCapacity, float loadFactor)
public def MemoryAwareConcurrentReadMap(int initialCapacity)
public def MemoryAwareConcurrentReadMap()
public void clear()
protected boolean eq(Object x, Object y)
public Object get(Object key)
null
if the key is not mapped to any value in
this table.
null
.
protected final Entry[] getTableForReading()
public boolean isEmpty()
public Object put(Object key, Object value)
key
to the specified
value
in this table. Neither the key nor the
value can be null
.
The value can be retrieved by calling the get
method
with a key that is equal to the original key.
null
if it did not have one.
null
.
protected final void recordModification(Object x)
protected void rehash()
public Object remove(Object key)
null
if the key did not have a mapping.
null
.
public int size()
protected Object sput(Object key, Object value, int hash)
protected Object sremove(Object key, int hash)
Copyright © 2003-2009 The Codehaus. All rights reserved.