K
- 键类型V
- 值类型public abstract class AbstractCache<K,V> extends Object implements Cache<K,V>
prune
策略Modifier and Type | Field and Description |
---|---|
protected Map<Mutable<K>,CacheObj<K,V>> |
cacheMap |
protected int |
capacity
返回缓存容量,
0 表示无大小限制 |
protected boolean |
existCustomTimeout
每个对象是否有单独的失效时长,用于决定清理过期对象是否有必要。
|
protected LongAdder |
hitCount
命中数,即命中缓存计数
|
protected SafeConcurrentHashMap<K,Lock> |
keyLockMap
写的时候每个key一把锁,降低锁的粒度
|
protected CacheListener<K,V> |
listener
缓存监听
|
protected LongAdder |
missCount
丢失数,即未命中缓存计数
|
protected long |
timeout
缓存失效时长,
0 表示无限制,单位毫秒 |
Constructor and Description |
---|
AbstractCache() |
Modifier and Type | Method and Description |
---|---|
protected Iterator<CacheObj<K,V>> |
cacheObjIter()
|
int |
capacity()
返回缓存容量,
0 表示无大小限制 |
V |
get(K key,
boolean isUpdateLastAccess,
Func0<V> supplier)
从缓存中获得对象,当对象不在缓存中或已经过期返回Func0回调产生的对象
调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回supplier回调产生的对象,否则返回值。
|
V |
get(K key,
boolean isUpdateLastAccess,
long timeout,
Func0<V> supplier)
从缓存中获得对象,当对象不在缓存中或已经过期返回Func0回调产生的对象
调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回supplier回调产生的对象,否则返回值。
|
long |
getHitCount() |
long |
getMissCount() |
protected CacheObj<K,V> |
getWithoutLock(K key)
获取键对应的
CacheObj |
boolean |
isEmpty()
缓存是否为空
|
boolean |
isFull()
缓存是否已满,仅用于有空间限制的缓存对象
|
protected boolean |
isPruneExpiredActive()
只有设置公共缓存失效时长或每个对象单独的失效时长时清理可用
|
Iterator<V> |
iterator() |
Set<K> |
keySet()
返回所有键
|
protected void |
onRemove(K key,
V cachedObject)
对象移除回调。
|
protected abstract int |
pruneCache()
清理实现
子类实现此方法时无需加锁 |
void |
put(K key,
V object)
将对象加入到缓存,使用默认失效时长
|
protected void |
putWithoutLock(K key,
V object,
long timeout)
加入元素,无锁
|
protected CacheObj<K,V> |
removeWithoutLock(K key)
移除key对应的对象,不加锁
|
AbstractCache<K,V> |
setListener(CacheListener<K,V> listener)
设置监听
|
int |
size()
缓存的对象数量
|
long |
timeout()
缓存失效时长,
0 表示没有设置,单位毫秒 |
String |
toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
cacheObjIterator, clear, containsKey, get, get, get, prune, put, remove
forEach, spliterator
protected final SafeConcurrentHashMap<K,Lock> keyLockMap
protected int capacity
0
表示无大小限制protected long timeout
0
表示无限制,单位毫秒protected boolean existCustomTimeout
protected LongAdder hitCount
protected LongAdder missCount
protected CacheListener<K,V> listener
public void put(K key, V object)
Cache
put
in interface Cache<K,V>
key
- 键object
- 缓存的对象Cache.put(Object, Object, long)
protected void putWithoutLock(K key, V object, long timeout)
key
- 键object
- 值timeout
- 超时时长public long getHitCount()
public long getMissCount()
public V get(K key, boolean isUpdateLastAccess, Func0<V> supplier)
Cache
调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回supplier回调产生的对象,否则返回值。
每次调用此方法会可选是否刷新最后访问时间,true
表示会重新计算超时时间。
public V get(K key, boolean isUpdateLastAccess, long timeout, Func0<V> supplier)
Cache
调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回supplier回调产生的对象,否则返回值。
每次调用此方法会可选是否刷新最后访问时间,true
表示会重新计算超时时间。
protected CacheObj<K,V> getWithoutLock(K key)
CacheObj
key
- 键,实际使用时会被包装为MutableObj
CacheObj
protected abstract int pruneCache()
public int capacity()
Cache
0
表示无大小限制public long timeout()
Cache
0
表示没有设置,单位毫秒protected boolean isPruneExpiredActive()
public boolean isFull()
Cache
public int size()
Cache
public boolean isEmpty()
Cache
public AbstractCache<K,V> setListener(CacheListener<K,V> listener)
setListener
in interface Cache<K,V>
listener
- 监听protected void onRemove(K key, V cachedObject)
key
- 键cachedObject
- 被缓存的对象protected CacheObj<K,V> removeWithoutLock(K key)
key
- 键Copyright © 2024. All rights reserved.