首页 > 编程语言 >[java]-超时自动处理

[java]-超时自动处理

时间:2023-03-08 12:56:24浏览次数:34  
标签:java 元素 member score 自动 key 集合 超时

实现方式

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,系统扫描第一个元素判断是否超时。

image-20220118002653489

Redis Set集合
通过Redis的set集合,将订单延迟时间的秒级别时间戳设置为set集合的key,value为订单lD。
image-20220118010701451

标签:java,元素,member,score,自动,key,集合,超时
From: https://www.cnblogs.com/my-global/p/17182343.html

相关文章

  • [java基础]-反射
    (一)反射:框架设计的灵魂1.反射介绍*框架:半成品软件。可以在框架的基础上进行软件开发,简化编码*反射:将类的各个组成部分封装为其他对象,这就是反射机制 *好处: 1.可以......
  • [java高级]-Stream API说明
    1、StreamAPI说明Java8中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是StreamAPI。StreamAPI(java.util.stream)把真正的函数式编程风格引入到......
  • [java高级]-详解Java8 Collect收集Stream的方法
    1、Collection,Collections,collect,Collector,CollectosCollection是Java集合的祖先接口。Collections是java.util包下的一个工具类,内涵各种处理集合的静态方法。j......
  • [java高级]-强大的Stream API
    1、StreamAPI说明Java8中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是StreamAPI。StreamAPI(java.util.stream)把真正的函数式编程风格引入到......
  • [java-project-gl]单点登录与社交登录
    一、注册登录(一)验证码功能1、注册页面reg.html展示页面:<aid="sendCode">发送验证码</a>reg.html的验证码的相关javascript: $(function(){ $("#sendC......
  • [java]-JWT-什么是JWT-JWT整合sprigboot
    1.什么是JWT?JSONWebToken(JWT)isanopenstandard(RFC7519)thatdefinesacompactandself-containedwayforsecurelytransmittinginformationbetweenpa......
  • Java核心机制:JVM
    吾心安处即吾乡。吾乡何处不可眠1.Java语言的优缺点Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。“青出于蓝,而胜于蓝”......
  • 常用的Java开发工具比较
    市场上Java开发常用的编辑器可谓是琳琅满目,令人眼花缭乱,甚至让人难以抉择。所以今天挑选了几款主流的编辑器进行介绍,都是功能比较丰富的IDE,至于大神使用的普通文本编辑器......
  • JavaScript上传文件夹的三种解决方案
    ​ 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对Http协议较模糊,故这次采用渐进的方式来学习文件上传的......
  • Java到底是编译型语言还是解释型语言?
    Java编程语言是由Sun微系统公司在20世纪90年代早期开发的。尽管Java主要用于基于internet的应用程序,但它是一种简单、高效、通用的语言。Java最初是为运行在多个平台上的......