1 LRU算法
LRU(Least recently used,最近最少使用)根据数据的历史访问记录来进行淘汰数据,思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
2 具体实现过程
- 新数据插入到链表头部;
- 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;
- 当链表满的时候,将链表尾部的数据丢弃。
3 基于LinkedHashMap实现简单的LRU算法
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.Map; /** * @param <K> * @param <V> */
public class LruLinkedHashMap<K, V> extends LinkedHashMap<K, V> { private final int maxCapacity; private static final float DEFAULT_LOAD_FACTOR = 0.75f; private final Lock reentra