延迟队列是指把当前要做的事情,往后推迟一段时间再做。

延迟队列在实际工作中和面试中都比较常见,它的实现方式有很多种,然而每种实现方式也都有它的优缺点,接下来我们来看。

延迟队列的使用场景

延迟队列的常见使用场景有以下几种:

  1. 超过 30 分钟未支付的订单,将会被取消
  2. 外卖商家超过 5 分钟未接单的订单,将会被取消
  3. 在平台注册但 30 天内未登录的用户,发短信提醒

等类似的应用场景,都可以使用延迟队列来实现。

常见实现方式

Redis 延迟队列实现的思路、优点:目前市面上延迟队列的实现方式基本分为三类,第一类是通过程序的方式实现,例如 JDK 自带的延迟队列 DelayQueue,第二类是通过 MQ 框架来实现,例如 RabbitMQ 可以通过 rabbitmq-delayed-message-exchange 插件来实现延迟队列,第三类就是通过 Redis 的方式来实现延迟队列。

程序实现方式

JDK 自带的 DelayQueue 实现延迟队列,代码如下:

public class DelayTest {public static void main(String[] args) throws InterruptedException {DelayQueue delayQueue = new DelayQueue();delayQueue.put(new DelayElement(1000));delayQueue.put(new DelayElement(3000));delayQueue.put(new DelayElement(5000));Sys

完整案例:实现延迟队列的两种方法相关推荐

  1. 对同一个三相逆变器使用FCS-MPC的延迟补偿的两种方法

    1.引言 基于上一条博文<SVPWM 三相逆变器电压空间矢量调制 初入门>的基础上,我们知道:MPC 优化问题可以简化和降低对系统行为的预测,只对可能的7 种开关状态进行预测,通过目标函数 ...

  2. Java数组实现循环队列的两种方法

    用java实现循环队列的方法: 1.增加一个属性size用来记录目前的元素个数.目的是当head=rear的时候,通过size=0还是size=数组长度,来区分队列为空,或者队列已满. 2.数组中只存 ...

  3. Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份、差异备份、日志备份)、还原、删除、修改数据库等案例)之详细攻略

    Database之SQLSever:SQLSever数据库管理(GUI法/SQL语句命令法两种方法实现备份(完整备份.差异备份.日志备份).还原.删除.修改数据库等案例)之详细攻略 目录 数据库管理 ...

  4. javax消息队列_java实现消息队列的两种方式(小结)

    实现消息队列的两种方式 Apache ActiveMQ官方实例发送消息 下载解压后拿到java代码实例 然后倒入IDE 如下: 请认真阅读readme.md文件,大致意思就是把项目打成两个jar包,然 ...

  5. Python案例:两种方法实现词频统计

    Python案例:两种方法实现词频统计 一.利用字典实现词频统计 1.编写源代码 2.查看运行结果 二.利用collections的Counter模块实现词频统计 <

  6. 知识点2:js(javascript)中检测是否为数组的两种方法【翻转数组案例】

    javascript基础知识 文章目录 javascript基础知识 前言 一.翻转数组案例 二.检测数组的两种方法 1.如果传输的参数不是数组 2.instanceof 运算符 可以用来检测是否满足 ...

  7. oracle事务数统计,【学习笔记】Oracle数据库收集统计信息的两种方法介绍案例

    天萃荷净 分享一篇关于Oracle数据库收集统计信息的办法,Oracle DBMS_STATS与Oracle analyze使用方法案例 今天群里面讨论DBMS_STATS和analyze,这里进行了 ...

  8. 《Axure RP7网站和APP原型制作从入门到精通(60小时案例版)》一第2章 母版详解2.1 创建母版的两种方法...

    本节书摘来自异步社区<Axure RP7网站和APP原型制作从入门到精通(60小时案例版)>一书中的第2章,第2.1节,作者 金乌,更多章节内容可以访问云栖社区"异步社区&quo ...

  9. 深度学习实战案例:基于LSTM的四种方法进行电影评论情感分类预测(附完整代码)

    序列分类是一个预测建模问题,你有一些输入序列,任务是预测序列的类别. 这个问题很困难,因为序列的长度可能不同,包含非常大的输入符号词汇表,并且可能需要模型学习输入序列中符号之间的长期上下文或依赖关系. ...

最新文章

  1. /dev/null 位桶
  2. Java技术分享:Lambda表达式之接口实例化
  3. how does SAP ui5 know the phone, tablet type, os type
  4. 5.jQueryAjax
  5. 洛谷 P1656 炸铁路
  6. C# httpcookie asp.net中cookie的使用
  7. UVA12022 Ordering T-shirts【数学+打表】
  8. Spring项目跟Axis2结合
  9. 配置nginx负载均衡
  10. selenium 3.0鼠标事件 (java代码)
  11. 训练loss不下降原因总结
  12. Cell:植物根系如何允许有益微生物定植的
  13. 电脑开机出现警报音后提示要按F1才能进入的分析处理
  14. 一起学习LLVM(一)
  15. [业务知识] 深入了解医联体和医共体
  16. linux串口蜂鸣器报警电路,蜂鸣器报警器电路图大全(五款模拟电路设计原理图详解)...
  17. 容器化 Spring Boot 代码的 9 个技巧
  18. python实现北京租房信息计算
  19. 【开源项目】Imagine图片压缩工具
  20. Git版本控制\远程开发\多人协作

热门文章

  1. ios下js复制到粘贴板_EXCEL被你忽视的粘贴板-11
  2. eplan单线原理图多线原理图_EPLAN-黑盒-2
  3. logstash-filter模块
  4. 修改win10我的文档下载等移动别处
  5. spring boot——MockMvc的用法
  6. CentOS7:JDK1.7.0_80安装
  7. tmpfiles.d导致的unix:///tmp/supervisor.sock no such file坑(待续)
  8. java 中的instanceof
  9. 原创 通过PEB获得进程路径 (附完整工程)
  10. 为什么我要选择erlang+go进行server架构(2)