All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hutool.cache.file.LRUFileCache Maven / Gradle / Ivy

Go to download

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

There is a newer version: 5.8.34
Show newest version
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