定时任务Quartz

简介

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

导入Jar

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>

对象

调度对象

SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler sched = schedulerFactory.getScheduler();

自定义任务类

//实现Job接口,并重写execute方法
public class TestJob implements Job{
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //业务代码...
    }
}

任务明细

 // 指定任务类,任务名,任务组
JobDetail jobDetail= JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();

// 通过调动对象获取任务明细
JobDetail detail = sched.getJobDetail(JobKey.jobKey(jobName, jobGroupName));

触发器

// 触发器
TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger();
// 触发器名,触发器组
triggerBuilder.withIdentity(triggerName, triggerGroupName);
triggerBuilder.startNow();
// 触发器时间设定,指定Cron表达式
triggerBuilder.withSchedule(CronScheduleBuilder.cronSchedule(cron));
// 创建Trigger对象
CronTrigger trigger = (CronTrigger) triggerBuilder.build();

//通过调动对象获取触发器
Scheduler sched = schedulerFactory.getScheduler();
TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);

执行和关闭

①执行指定任务

 // 指定任务和触发器
 sched.scheduleJob(jobDetail, trigger);
 // 执行
 if (!sched.isShutdown()) {
     sched.start();
 }   

②执行全部任务

Scheduler sched = schedulerFactory.getScheduler();
sched.start();

③关闭全部任务

Scheduler sched = schedulerFactory.getScheduler();
 if (!sched.isShutdown()) {
     sched.shutdown();
 }

删除任务

  Scheduler sched = schedulerFactory.getScheduler();
  TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
  sched.pauseTrigger(triggerKey);// 暂停触发器
  sched.unscheduleJob(triggerKey);// 移除触发器
  sched.deleteJob(JobKey.jobKey(jobName, jobGroupName));// 删除任务

暂停任务

 Scheduler scheduler = schedulerFactory.getScheduler();
 JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
 scheduler.pauseJob(jobKey);

恢复任务

 Scheduler scheduler = schedulerFactory.getScheduler();
 JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
 scheduler.resumeJob(jobKey);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值