缓存重建线程

这篇博客探讨了如何在单例模式下使用ArrayBlockingQueue作为缓存重建的内存队列。RebuildCacheThread通过阻塞队列的take方法获取重建参数,并在获取分布式锁后更新缓存。如果数据版本较旧则跳过,否则更新本地和分布式缓存。博客还介绍了ArrayBlockingQueue的各种操作方法,包括阻塞和非阻塞的元素添加与移除。
摘要由CSDN通过智能技术生成

缓存重建线程
单例模式 缓存重建内存队列 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、释放分布式锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值