(8)用Java实现多种缓存机制

1、FIFO(First In First Out): 先入先出,和队列一样

2、LRU(Least Recently Used): 最近读取放最前,最早读放后,新的数据进来,后面的淘汰。

3、LFU(Least Frequently Used): 最不常使用,对存储的数据都有计数引用,引用多排前面,少排后。新进来,后面删,把新进数据排在最后面,引用次数为1

下面几种实现当中都没有实现线程安全

一、FIFO实现: 

LinkedHashMap存储数据排序,先进先出,本身返回false,子类中重写,可自定义去实现

(8)用Java实现多种缓存机制_第1张图片
(8)用Java实现多种缓存机制_第2张图片
FIFO测试类

二、LRU 

int initialCapacity(容量), 

float loadFactor(加载因子) 

boolean accessOrder是否启用LRU(默认不启动)

(8)用Java实现多种缓存机制_第3张图片
(8)用Java实现多种缓存机制_第4张图片

优化:合理构造LinkedHashMap,控制临界点扩容操作。设置ture

(8)用Java实现多种缓存机制_第5张图片
(8)用Java实现多种缓存机制_第6张图片

三、LFU 

本例不考虑命中时间,只考虑命中次数,LFU实现丑,可换思路改进,如TreeMap实现排序

(8)用Java实现多种缓存机制_第7张图片
(8)用Java实现多种缓存机制_第8张图片
(8)用Java实现多种缓存机制_第9张图片
(8)用Java实现多种缓存机制_第10张图片
(8)用Java实现多种缓存机制_第11张图片
测试类,

你可能感兴趣的:((8)用Java实现多种缓存机制)