发布网友 发布时间:2022-04-22 03:51
共1个回答
热心网友 时间:2022-04-10 22:48
给你一个简单的案例加详细注解
/*
* job是一个接口,只有一个方法void execute(JobExecutionContext context),
* 被调度的作业(类)需实现该接口中execute()方法,
* JobExecutionContext类提供了调度上下文的各种信息。每次执行该Job均重新创建一个Job实例
*/
public class MyJob implements Job {
//MyJob类为需要定时执行的类,execute为定时执行的方法。一个定时任务对应一个Job实现类。
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
perform();
}
public void perform(){ //执行报表统计入口函数
//业务逻辑
System.out.println("执行时间:"+new Date());
}
}
public class QuartzTest5 {
public static void main(String[] args) throws Exception {
//SchelerFactory 是一个接口,用于Scheler的创建和管理
SchelerFactory factory = new StdSchelerFactory();
//从工厂里面拿到一个scheler实例
//计划表(可能翻译的不太贴切),现在我们有了要做的内容,
//与调度程序交互的主要API
/*
* Scheler的生命期,从SchelerFactory创建它时开始,
到Scheler调用shutdown()方法时结束;Scheler被创建后,
可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作
(如暂停Trigger)。但是,Scheler只有在调用start()方法后,
才会真正地触发trigger(即执行job)
*/
Scheler scheler = factory.getScheler();
//具体任务.
//用于定义作业的实例
//JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
//Trigger(即触发器) - 定义执行给定作业的计划的组件
//TriggerBuilder - 用于定义/构建触发器实例
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchele(CronScheleBuilder.cronSchele("0/1 * * * * ?")).build();
scheler.scheleJob(job, trigger);
scheler.start();
}
}