• 有趣的设计——注解形式实现策略模式


    有趣的设计——延时队列(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

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

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

     
    img

  • 相关阅读:
    Session共享的解决方案
    用IIS配置反向代理
    authorization配置
    git之https或http方式设置记住用户名和密码的方法
    微信分享接口
    为你的Visual Studio单独设置代理服务器
    HTTP错误404.13
    MVC5的AuthorizeAttribute详解
    【MVC5】画面多按钮提交
    PetaPoco dynamic
  • 原文地址:https://www.cnblogs.com/pingping-joe/p/13539514.html
Copyright © 2020-2023  润新知