自定义延迟队列

 

/**
 * 自定义延迟队列
 * @author xulihui
 * @date 2020/4/12 19:07
 */
public class CustomDelayQueue {
    // 延迟消息队列
    private static DelayQueue delayQueue = new DelayQueue();

    // 生产者
    public static void producer() {
        // 添加消息
        delayQueue.put(new Delay(2000,"1"));
        delayQueue.put(new Delay(10000,"1"));
    }
   // 消费者
    public static void consumer() throws Exception {
       System.out.println("开始执行时间:"+ DateFormat.getDateTimeInstance().format(new Date()));
       while (!delayQueue.isEmpty()) {
           System.out.println(delayQueue.take());
       }
        System.out.println("结束执行时间:"+ DateFormat.getDateTimeInstance().format(new Date()));

    }

    static class Delay implements Delayed {

        long delayTime =   System.currentTimeMillis();

        private String msg ;


        public Delay (long delayTime,String msg) {
            this.delayTime =(this.delayTime+ delayTime);
            this.msg =msg;
        }

         public String getMsg() {
             return msg;
         }

         public void setMsg(String msg) {
             this.msg = msg;
         }

         // 获取剩余时间
         @Override
        public long getDelay(TimeUnit unit) {
            return unit.convert(delayTime -System.currentTimeMillis(),TimeUnit.MILLISECONDS);
        }

        @Override
        public int compareTo(Delayed o) {
            if (this.getDelay(TimeUnit.MILLISECONDS) > o.getDelay(TimeUnit.MILLISECONDS)) {
                return  1;
            } else if (this.getDelay(TimeUnit.MILLISECONDS) < o.getDelay(TimeUnit.MILLISECONDS)) {
                return  -1;
            } else {
                return 0;
            }
        }

         @Override
         public String toString() {
             return "Delay{" +
                     "delayTime=" + delayTime +
                     ", msg='" + msg + '\'' +
                     '}';
         }
     }

    public static void main(String[] args) throws Exception {
       // 生产者
        producer();
        //消费者
        consumer();
    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇凝子潇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值