quartz实现任务动态增加和删除

java解决定时任务的方法较为常用的是有两种方法:java.util.Timer 和org.quartz;这两种方式各有起优缺点,Timer实现起来非常简单,只需要实现一个TimerTask即可进行定时任务调度,但是Timer定时任务存在几个缺点导致在实际开发中很少用其作为定时器,以下是timer和quartz相比的不足
摘要由CSDN通过智能技术生成

场景

这几天做项目的时候遇到了个状态自动切换的场景。该场景具体情况如下:
1. 用户可以创建多个活动
2. 活动有开始时间和结束时间
3. 活动有个状态:未上线、未开始(上线但未到开始时间)、进行中(上线且处于开始时间和结束时间之间)、已结束(上线且处于活动结束时间之后)
4. 在上诉条件下自动切换活动状态,切换时间点为:活动开始时间(未开始->进行中);活动结束时间(进行中->已结束)

分析

根据场景中出现的情况,一个定时器就可以解决问题,只需要添加定时任务在指定时间进行活动状态切换即可。可以在活动上线的时候为每个活动创建一个定时任务,由于活动可以在进行中下线,所以在执行上线操作的时候需要判断上线后的活动状态,然后根据活动当前状态创建当时任务;在活动下线的时候关闭该活动的任务。

java解决定时任务的方法较为常用的是有两种方法:java.util.Timer 和org.quartz;这两种方式各有起优缺点,Timer实现起来非常简单,只需要实现一个TimerTask即可进行定时任务调度,但是Timer定时任务存在几个缺点导致在实际开发中很少用其作为定时器,以下是timer和quartz相比的不足:

  1. java定时器没有持久化机制
  2. java定时器的日程管理不够灵活
  3. java定时器没有使用线程池
  4. java定时器么有确切的管理方案

生成环境中更多是使用quartz来做定时任务的开发,本文主要讲解quartz如何添加定时任务和删除定时任务。

quartz介绍

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。
image

  • job quartz核心任务接口,实现execute方法即可
  • jobDetail quartz为调度器可以识别的任务详情对象,该对象包含任务的唯一key值,以及任务人发执行所需参数等
  • trigger 任务执行触发器,指定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值