public abstract class AbstractCacheMap<K,V> extends java.lang.Object implements Cache<K,V>
prune strategyReentrantReadWriteLock to synchronize access.
Since upgrading from a read lock to the write lock is not possible,
be careful withing get(Object) method.| Modifier and Type | Field and Description |
|---|---|
protected java.util.Map<K,jodd.cache.AbstractCacheMap.CacheObject<K,V>> |
cacheMap |
protected int |
cacheSize |
protected boolean |
existCustomTimeout
Identifies if objects has custom timeouts.
|
protected int |
hitCount |
protected int |
missCount |
protected long |
timeout |
| Constructor and Description |
|---|
AbstractCacheMap() |
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
Clears current cache.
|
V |
get(K key)
Retrieves an object from the cache.
|
int |
getCacheSize()
Returns cache size or
0 if there is no size limit. |
long |
getCacheTimeout()
Returns default cache timeout or
0 if it is not set. |
int |
getHitCount()
Returns hit count.
|
int |
getMissCount()
Returns miss count.
|
boolean |
isEmpty()
Returns
true if cache is empty. |
boolean |
isFull()
Returns
true if max cache capacity has been reached
only if cache is size limited. |
protected boolean |
isPruneExpiredActive()
Returns
true if prune of expired objects should be invoked. |
protected boolean |
isReallyFull(K key) |
java.util.Iterator<V> |
iterator()
Returns iterator over non-expired values.
|
int |
prune()
Prunes objects from cache and returns the number of removed objects.
|
protected abstract int |
pruneCache()
Prune implementation.
|
void |
put(K key,
V object)
Adds an object to the cache with default timeout.
|
void |
put(K key,
V object,
long timeout)
Adds an object to the cache with specified timeout after which it becomes expired.
|
void |
remove(K key)
Removes an object from the cache.
|
int |
size()
Returns current cache size.
|
protected int cacheSize
protected long timeout
protected boolean existCustomTimeout
protected int hitCount
protected int missCount
public int getCacheSize()
0 if there is no size limit.getCacheSize in interface Cache<K,V>public long getCacheTimeout()
0 if it is not set.
Timeout can be set individually for each object.getCacheTimeout in interface Cache<K,V>protected boolean isPruneExpiredActive()
true if prune of expired objects should be invoked.
For internal use.public void put(K key, V object)
put in interface Cache<K,V>Cache.put(Object, Object, long)public void put(K key, V object, long timeout)
Cache.prune() is invoked to make room for new object.public int getHitCount()
public int getMissCount()
public V get(K key)
null if object
is not longer in cache or if it is expired.public java.util.Iterator<V> iterator()
protected abstract int pruneCache()
public final int prune()
public boolean isFull()
true if max cache capacity has been reached
only if cache is size limited.protected boolean isReallyFull(K key)
public void remove(K key)
Copyright © 2003-2013 Jodd Team