cn.hutool.cache.file.LRUFileCache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hutool-all Show documentation
Show all versions of hutool-all Show documentation
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
package cn.hutool.cache.file;
import java.io.File;
import cn.hutool.cache.Cache;
import cn.hutool.cache.impl.LRUCache;
/**
* 使用LRU缓存文件,以解决频繁读取文件引起的性能问题
* @author Looly
*
*/
public class LRUFileCache extends AbstractFileCache{
private static final long serialVersionUID = 1L;
/**
* 构造
* 最大文件大小为缓存容量的一半
* 默认无超时
* @param capacity 缓存容量
*/
public LRUFileCache(int capacity) {
this(capacity, capacity / 2, 0);
}
/**
* 构造
* 默认无超时
* @param capacity 缓存容量
* @param maxFileSize 最大文件大小
*/
public LRUFileCache(int capacity, int maxFileSize) {
this(capacity, maxFileSize, 0);
}
/**
* 构造
* @param capacity 缓存容量
* @param maxFileSize 文件最大大小
* @param timeout 默认超时时间,0表示无默认超时
*/
public LRUFileCache(int capacity, int maxFileSize, long timeout) {
super(capacity, maxFileSize, timeout);
}
@Override
protected Cache initCache() {
return new LRUCache(LRUFileCache.this.capacity, super.timeout) {
private static final long serialVersionUID = 1L;
@Override
public boolean isFull() {
return LRUFileCache.this.usedSize > this.capacity;
}
@Override
protected void onRemove(File key, byte[] cachedObject) {
usedSize -= cachedObject.length;
}
};
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy