zoukankan      html  css  js  c++  java
  • 有趣的设计——延时队列(DelayQueue)实现超时任务处理机制

    有趣的设计——延时队列(DelayQueue)实现超时任务处理机制

    作者:星晴(当地小有名气,小到只有自己知道的杰伦粉)

    今天不得不吐槽一下老板了,我了去,又没发工资,这还让不让我活了,身负贷款,真的快要以贷养贷了。有没有搞错啊,老天啊;这句话憋了很久了,说出心声舒服多了,还是老老实实计算一下下个月怎么过吧!今天的互联网行情真是不好,我们公司也离倒闭不远了,希望慢慢能度过这段时间,有所好转,不然就得重新找工作了!!!

    吐槽了这么多,还是回归正题,今天给大家分享一下我们项目中如何通过延时队列实现超时任务处理机制。

    生产代码就不展示了,就一个Demo来玩吧

    DelayQueue

    作用:根据执行时间进行排序,然后等待到执行时间,就能获取到相对的数据

    应用场景:超时任务处理

     

    1.创建DelayTask 实现Delayed
    1596699988849.png

    属性说明:

    • executeTime 延时任务的执行时间

    • taskType 任务类型

    • msg 具体执行的任务数据

    方法:

    • getDelay() 返回还剩多少时间执行: 通过任务执行时间减去当前时间

    • compareTo() 返回排序大小: 队列之间的执行时间排序

     

    2.创建延迟队列处理器

    1596701665397.png

    说明:

    • while循环获取队列

    • delayQueue.take(),有数据就返回,没数据就等待

     

    3.创建Test类

    test.png

    输出结果:

    1596702046505.png

    如果还有什么不懂,欢迎在下面留言!!!

    关注公众号,有更多好玩的等着你!!!

     

  • 相关阅读:
    激活Win Server 2008 R2 Datacenter
    .NET中使用EF6与连接MYSQL
    设计模式(六)——命令模式
    C#爬虫之Senlium
    GitHub入门(一)GIT配置与Hexo博客搭建
    正则表达式
    C#预处理器
    第一次炒花甲
    第一次清蒸鲈鱼
    Python traceback【转】
  • 原文地址:https://www.cnblogs.com/pingping-joe/p/13539481.html
Copyright © 2011-2022 走看看