K
- 键类型V
- 值类型public abstract class ReentrantCache<K,V> extends AbstractCache<K,V>
ReentrantLock
保护的缓存,读写都使用悲观锁完成,主要避免某些Map无法使用读写锁的问题Modifier and Type | Field and Description |
---|---|
protected ReentrantLock |
lock |
cacheMap, capacity, existCustomTimeout, hitCount, keyLockMap, listener, missCount, timeout
Constructor and Description |
---|
ReentrantCache() |
Modifier and Type | Method and Description |
---|---|
Iterator<CacheObj<K,V>> |
cacheObjIterator()
返回包含键和值得迭代器
|
void |
clear()
清空缓存
|
boolean |
containsKey(K key)
是否包含key
|
V |
get(K key,
boolean isUpdateLastAccess)
从缓存中获得对象,当对象不在缓存中或已经过期返回
null
调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回null ,否则返回值。 |
int |
prune()
从缓存中清理过期对象,清理策略取决于具体实现
|
void |
put(K key,
V object,
long timeout)
将对象加入到缓存,使用指定失效时长
如果缓存空间满了, Cache.prune() 将被调用以获得空间来存放新对象 |
void |
remove(K key)
从缓存中移除对象
|
String |
toString() |
cacheObjIter, capacity, get, get, getHitCount, getMissCount, getWithoutLock, isEmpty, isFull, isPruneExpiredActive, iterator, keySet, onRemove, pruneCache, put, putWithoutLock, removeWithoutLock, setListener, size, timeout
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
forEach, spliterator
protected final ReentrantLock lock
public void put(K key, V object, long timeout)
Cache
Cache.prune()
将被调用以获得空间来存放新对象key
- 键object
- 缓存的对象timeout
- 失效时长,单位毫秒public boolean containsKey(K key)
Cache
key
- KEYpublic V get(K key, boolean isUpdateLastAccess)
Cache
null
调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回null
,否则返回值。
每次调用此方法会可选是否刷新最后访问时间,true
表示会重新计算超时时间。
key
- 键isUpdateLastAccess
- 是否更新最后访问时间,即重新计算超时时间。public Iterator<CacheObj<K,V>> cacheObjIterator()
Cache
public final int prune()
Cache
public void remove(K key)
Cache
key
- 键public void clear()
Cache
public String toString()
toString
in class AbstractCache<K,V>
Copyright © 2024. All rights reserved.