public class SelectableConcurrentHashMap.Segment
extends java.util.concurrent.locks.ReentrantReadWriteLock
Modifier and Type | Field and Description |
---|---|
protected int |
count
The number of elements in this segment's region.
|
private java.util.Iterator<SelectableConcurrentHashMap.HashEntry> |
evictionIterator |
private boolean |
fullyPinned |
(package private) float |
loadFactor
The load factor for the hash table.
|
private static int |
MAX_EVICTION |
(package private) int |
modCount
Number of updates that alter the size of the table.
|
protected int |
numDummyPinnedKeys |
protected int |
pinnedCount |
protected SelectableConcurrentHashMap.HashEntry[] |
table
The per-segment table.
|
(package private) int |
threshold
The table is rehashed when its size exceeds this threshold.
|
Modifier | Constructor and Description |
---|---|
protected |
Segment(int initialCapacity,
float lf) |
Modifier and Type | Method and Description |
---|---|
protected void |
clear() |
(package private) boolean |
containsKey(java.lang.Object key,
int hash) |
(package private) boolean |
containsValue(java.lang.Object value) |
protected SelectableConcurrentHashMap.HashEntry |
createHashEntry(java.lang.Object key,
int hash,
SelectableConcurrentHashMap.HashEntry next,
Element value,
long sizeOf,
boolean pinned) |
(package private) boolean |
evict() |
(package private) Element |
get(java.lang.Object key,
int hash) |
(package private) java.util.Iterator<SelectableConcurrentHashMap.HashEntry> |
getEvictionIterator() |
protected SelectableConcurrentHashMap.HashEntry |
getFirst(int hash)
Returns properly casted first entry of bin for given hash.
|
boolean |
isPinned(java.lang.Object key,
int hash) |
protected java.util.Iterator<SelectableConcurrentHashMap.HashEntry> |
iterator() |
private Element |
nextExpiredOrToEvict(Element justAdded) |
private void |
notifyEvictionOrExpiry(Element element) |
protected void |
postInstall(java.lang.Object key,
Element value,
boolean pinned) |
protected void |
preRemove(SelectableConcurrentHashMap.HashEntry e) |
protected Element |
put(java.lang.Object key,
int hash,
Element value,
long sizeOf,
boolean onlyIfAbsent,
boolean pinned,
boolean fire) |
void |
recalculateSize(java.lang.Object key,
int hash) |
(package private) void |
rehash() |
protected SelectableConcurrentHashMap.HashEntry |
relinkHashEntry(SelectableConcurrentHashMap.HashEntry e,
SelectableConcurrentHashMap.HashEntry next) |
(package private) Element |
remove(java.lang.Object key,
int hash,
java.lang.Object value) |
private SelectableConcurrentHashMap.HashEntry |
removeAndGetFirst(SelectableConcurrentHashMap.HashEntry e,
SelectableConcurrentHashMap.HashEntry first) |
void |
setPinned(java.lang.Object key,
boolean pinned,
int hash) |
(package private) void |
setTable(SelectableConcurrentHashMap.HashEntry[] newTable)
Sets table to new HashEntry array.
|
void |
unpinAll() |
getOwner, getQueuedReaderThreads, getQueuedThreads, getQueuedWriterThreads, getQueueLength, getReadHoldCount, getReadLockCount, getWaitingThreads, getWaitQueueLength, getWriteHoldCount, hasQueuedThread, hasQueuedThreads, hasWaiters, isFair, isWriteLocked, isWriteLockedByCurrentThread, readLock, toString, writeLock
private static final int MAX_EVICTION
protected volatile int count
int modCount
int threshold
protected volatile SelectableConcurrentHashMap.HashEntry[] table
final float loadFactor
private java.util.Iterator<SelectableConcurrentHashMap.HashEntry> evictionIterator
private boolean fullyPinned
protected volatile int pinnedCount
protected volatile int numDummyPinnedKeys
protected void preRemove(SelectableConcurrentHashMap.HashEntry e)
protected void postInstall(java.lang.Object key, Element value, boolean pinned)
void setTable(SelectableConcurrentHashMap.HashEntry[] newTable)
protected SelectableConcurrentHashMap.HashEntry getFirst(int hash)
public void setPinned(java.lang.Object key, boolean pinned, int hash)
private SelectableConcurrentHashMap.HashEntry removeAndGetFirst(SelectableConcurrentHashMap.HashEntry e, SelectableConcurrentHashMap.HashEntry first)
public boolean isPinned(java.lang.Object key, int hash)
public void unpinAll()
protected SelectableConcurrentHashMap.HashEntry createHashEntry(java.lang.Object key, int hash, SelectableConcurrentHashMap.HashEntry next, Element value, long sizeOf, boolean pinned)
protected SelectableConcurrentHashMap.HashEntry relinkHashEntry(SelectableConcurrentHashMap.HashEntry e, SelectableConcurrentHashMap.HashEntry next)
protected void clear()
Element remove(java.lang.Object key, int hash, java.lang.Object value)
public void recalculateSize(java.lang.Object key, int hash)
protected Element put(java.lang.Object key, int hash, Element value, long sizeOf, boolean onlyIfAbsent, boolean pinned, boolean fire)
private void notifyEvictionOrExpiry(Element element)
Element get(java.lang.Object key, int hash)
boolean containsKey(java.lang.Object key, int hash)
boolean containsValue(java.lang.Object value)
protected java.util.Iterator<SelectableConcurrentHashMap.HashEntry> iterator()
boolean evict()
void rehash()
java.util.Iterator<SelectableConcurrentHashMap.HashEntry> getEvictionIterator()