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