缓存重建线程
单例模式 缓存重建内存队列 ArrayBlockingQueue 阻塞内存队列,默认1000长度
属性
ArrayBlockingQueue queue
方法
阻塞
queue.put() 在队尾插入元素,如果队列没有空间阻塞放入
queue.take() 从队头获取元素,如果没有数据阻塞获取
如果没有数据抛出异常
add 在队尾插入元素,如果队列没有空间抛出异常
remove 在队头获取并移除元素,如果没有数据抛出异常
特殊值
offer 在队尾插入元素,如果队列满了返回false,否则入队返回true
poll 在队头获取并移除元素,队列为空返回null
peek 返回队列头元素,但不移除该元素,队列为空返回null
超时
offer(e, time, unit)
poll(time, unit)
RebuildCacheThread 缓存重建线程
run 方法
1、通过while循环里阻塞队列的take方法获取重建的缓存入参
2、获取分布式锁
3、从缓存获取服务中获取缓存入参信息
4、判断当前数据的时间版本比已有数据的时间版本新旧,如果更旧跳过缓存更新
5、如果更新,保存更新本地缓存,分布式缓存
6、释放分布式锁