zoukankan      html  css  js  c++  java
  • 使用LinkedHashMap来实现一个使用LRU(Least Recently Used)算法的cache

    removeEldestEntry在使用put或者putAll方法插入一个新的entry到map中时被调用,是否要删除年老的entry取决于是否满足既定的条件(比如本例中的条件:MAP中entry数量大于1000)。如果MAP表示缓存,这是有用的:它允许MAP通过删除过时条目来减少内存消耗。

    import java.util.LinkedHashMap;
    import java.util.Map;
    
    public class LruCache {
    
        private final Map<Object, Object> store;
        private static final int MAX = 1000;
    
        public LruCache() {
            this.store = new LinkedHashMap<Object, Object>() {
                private static final long serialVersionUID = -3834209229668463829L;;
    
                /**
                 * 当满足一定条件时删除Map中的年老的Entry
                 */
                @Override
                protected boolean removeEldestEntry(Entry<Object, Object> eldest) {
                    return size() > MAX;
                }
            };
        }
    
        public void put(Object key, Object value) {
            synchronized (LruCache.class) {
                store.put(key, value);
            }
        }
    
        public Object get(Object key) {
            synchronized (LruCache.class) {
                return store.get(key);
            }
        }
    
    }
  • 相关阅读:
    站立会议(2)
    站立会议(1)
    学习进度条
    四则运算2
    学习进度条
    IDEA用maven创建springMVC项目和配置
    Itellij Idea全局搜索
    Spring各个jar包作用
    IDEA一定要改的八条配置
    Nio使用Selector客户端与服务器的通信
  • 原文地址:https://www.cnblogs.com/frankyou/p/9542283.html
Copyright © 2011-2022 走看看