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

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

做者:星晴(当地小有名气,小到只有本身知道的杰伦粉)微信

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

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

生产代码就不展现了,就一个Demo来玩吧.net

DelayQueue

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

应用场景:超时任务处理3d

           

1.建立DelayTask 实现Delayed
                       

     

属性说明:code

  • executeTime 延时任务的执行时间orm

  • taskType 任务类型blog

  • msg 具体执行的任务数据排序

方法:

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

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


2.建立延迟队列处理器

说明:

  • while循环获取队列

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


3.建立Test类

输出结果:

若是还有什么不懂,欢迎在下面留言!!!

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


本文分享自微信公众号 - 喜欢奶茶的星晴(code-1984)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索