还要带自动失效的,最好还是LRU。为了LRU,需要把刚使用的数据存入栈,或者纪录每个数据最近使用的时间,再来的定时扫描失效的线程….其实,Java本身就已经为我们提供了LRU Cache很好的实现,即LinkedHashMap。LinkedHashMap是一个双向链表,加上HashTable的实现。表现出来与普通HashMap的一个区别就是LinkedHashMap会记录存入其中的数据的顺序,并能按顺取出。可见,当你为LinkedHashMap设置有限空间的时候,自然便完成了LRU Cache的效果。表示空间已满时,删除最老的。如此,我们就获得了一个LRU缓存利器,满足了我们大多场景下的需求。这时候,你再找,可以看到java有ConcurrentHashMap的实现,但并不存在ConcurrentLinkedHashMap这样的类。目前,我们所用的处理,是直接采和google提供的guava包,这里面就提供了我们想要的ConcurrentLinkedHashMap。
暂无评论