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. |
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.public void remove(K key)
Copyright © 2003-2013 Jodd Team