Package net.sf.ehcache.store.chm
Class SelectableConcurrentHashMap
- java.lang.Object
-
- net.sf.ehcache.store.chm.SelectableConcurrentHashMap
-
public class SelectableConcurrentHashMap extends java.lang.ObjectSelectableConcurrentHashMap subclasses a repackaged version of ConcurrentHashMap ito allow efficient random sampling of the map values.The random sampling technique involves randomly selecting a map Segment, and then selecting a number of random entry chains from that segment.
- Author:
- Chris Dennis
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSelectableConcurrentHashMap.HashEntryclassSelectableConcurrentHashMap.Segment
-
Constructor Summary
Constructors Constructor Description SelectableConcurrentHashMap(PoolAccessor poolAccessor, int initialCapacity, float loadFactor, int concurrency, long maximumSize, RegisteredEventListeners cacheEventNotificationService)SelectableConcurrentHashMap(PoolAccessor poolAccessor, int concurrency, long maximumSize, RegisteredEventListeners cacheEventNotificationService)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()booleancontainsKey(java.lang.Object key)booleancontainsValue(java.lang.Object value)protected SelectableConcurrentHashMap.SegmentcreateSegment(int initialCapacity, float lf)java.util.Set<java.util.Map.Entry<java.lang.Object,Element>>entrySet()booleanevict()Elementget(java.lang.Object key)Element[]getRandomValues(int size, java.lang.Object keyHint)protected static inthash(int h)booleanisEmpty()java.util.Set<java.lang.Object>keySet()java.util.concurrent.locks.ReentrantReadWriteLocklockFor(java.lang.Object key)java.util.concurrent.locks.ReentrantReadWriteLock[]locks()Elementput(java.lang.Object key, Element element, long sizeOf)ElementputIfAbsent(java.lang.Object key, Element element, long sizeOf)intquickSize()Returns the number of key-value mappings in this map without locking anything.voidrecalculateSize(java.lang.Object key)Elementremove(java.lang.Object key)booleanremove(java.lang.Object key, java.lang.Object value)protected SelectableConcurrentHashMap.SegmentsegmentFor(int hash)Returns the segment that should be used for key with given hashprotected java.util.List<SelectableConcurrentHashMap.Segment>segments()voidsetMaxSize(long maxSize)intsize()java.lang.ObjectstoredObject(Element e)Return an object of the kind which will be stored when the element is going to be insertedjava.util.Collection<Element>values()
-
-
-
Constructor Detail
-
SelectableConcurrentHashMap
public SelectableConcurrentHashMap(PoolAccessor poolAccessor, int concurrency, long maximumSize, RegisteredEventListeners cacheEventNotificationService)
-
SelectableConcurrentHashMap
public SelectableConcurrentHashMap(PoolAccessor poolAccessor, int initialCapacity, float loadFactor, int concurrency, long maximumSize, RegisteredEventListeners cacheEventNotificationService)
-
-
Method Detail
-
setMaxSize
public void setMaxSize(long maxSize)
-
getRandomValues
public Element[] getRandomValues(int size, java.lang.Object keyHint)
-
storedObject
public java.lang.Object storedObject(Element e)
Return an object of the kind which will be stored when the element is going to be inserted- Parameters:
e- the element- Returns:
- an object looking-alike the stored one
-
quickSize
public int quickSize()
Returns the number of key-value mappings in this map without locking anything. This may not give the exact element count as locking is avoided. If the map contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.- Returns:
- the number of key-value mappings in this map
-
isEmpty
public boolean isEmpty()
-
size
public int size()
-
lockFor
public java.util.concurrent.locks.ReentrantReadWriteLock lockFor(java.lang.Object key)
-
locks
public java.util.concurrent.locks.ReentrantReadWriteLock[] locks()
-
get
public Element get(java.lang.Object key)
-
containsKey
public boolean containsKey(java.lang.Object key)
-
containsValue
public boolean containsValue(java.lang.Object value)
-
remove
public Element remove(java.lang.Object key)
-
remove
public boolean remove(java.lang.Object key, java.lang.Object value)
-
clear
public void clear()
-
keySet
public java.util.Set<java.lang.Object> keySet()
-
values
public java.util.Collection<Element> values()
-
entrySet
public java.util.Set<java.util.Map.Entry<java.lang.Object,Element>> entrySet()
-
createSegment
protected SelectableConcurrentHashMap.Segment createSegment(int initialCapacity, float lf)
-
evict
public boolean evict()
-
recalculateSize
public void recalculateSize(java.lang.Object key)
-
segmentFor
protected final SelectableConcurrentHashMap.Segment segmentFor(int hash)
Returns the segment that should be used for key with given hash- Parameters:
hash- the hash code for the key- Returns:
- the segment
-
segments
protected final java.util.List<SelectableConcurrentHashMap.Segment> segments()
-
hash
protected static int hash(int h)
-
-