[java]-超时自动处理
实现方式
1.数据库轮询(30)
订单表(订单ID、状态、创建时间) 物理、 逻辑
2.JDK队列 DelayedQueue 无界阻塞队列
poll() 得到超时的元素, 如果没有任何元素超时,返回null
take() 得到超时的元素, 如果没有任何元素超时,阻塞
3.环形队列
环形队列的本质是一个指定长度的数组,数组中每个位置可存放一个任务集合(Set),集合中的元素为任务(Task)。当扫描到数组最后一个元素时,重新从下标0开始下一轮扫描,形成环形队列。
Task结构中有两个非常重要的属性:
1、num:当前第几圈扫描到这个Task时,执行任务;
2、taskId:任务执行的ID。
4.Redis有序集合(可以解决集群)
Redis sortedset集合(sorted set也叫zset)是一个有序集合,每个元素(member)都关联了一个score,可以通过score排序获取集合中的值。
zset常用命令
添加元素:zadd key score member[[score member][score member].…]
按顺序查询元素:zrange key start stop [withscores]
查询元素score:zscore key member
移除元素:zrem key member[member.…]
Redis有序集合
将订单超时时间碳与订单号分别设置为score与member,系统扫描第一个元素判断是否超时。
Redis Set集合
通过Redis的set集合,将订单延迟时间的秒级别时间戳设置为set集合的key,value为订单lD。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-03-08 urllib登录的cookie复制到headers,模拟登录人人网
2020-03-08 urllib中的保存cookie使用,运用cookiejar来模拟登录人人网
2020-03-08 urllib中的cookie使用,四种方法
2020-03-08 urllib中的https使用,导入ssl模块
2020-03-08 urllib判断重定向
2020-03-08 urllib中的down,下载百度图片为例
2020-03-08 urllib中的本地代理设置