上一篇博客是基于map实现了一个简单的缓存工具类,但实际开发过程中我们会发现,我们的内存空间是有限的,当缓存占用的空间达到上限,我们就应该将超过上限需要淘汰部分的缓存数据清除掉,从而达到缓存空间的优化。
常见的淘汰策略有:FIFO、LRU、LFU,这里我根据老师的讲解,在上一往篇的基础之上,加入了FIFO淘汰策略的支持。
感兴趣的同学一起来学习一下,继续贴代码……
package com.study.map;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 基于map的缓存工具类, 带FIFO策略
* @author tongke
* @email tongkp@126.com
* @create 2020-07-20 21:53
*/
public class FIFOCacheProvider {
//存放缓存的集合
private Map<String, CacheData> cacheDatas = null;
//定时器线程池,用于消除过期缓存
private final static ScheduledThreadPoolExecutor EXECUTOR = new ScheduledThreadPoolExecutor(5);
//FIFO
private static int MAX_CACHE_SIZE = 0;
//
private final float LO