
java如何利用第三方Quartz实现定时任务
2018-07-06 · 国内最优秀java资源共享平台

给你一个简单的案例加详细注解
/*
* 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 {
//SchedulerFactory 是一个接口,用于Scheduler的创建和管理
SchedulerFactory factory = new StdSchedulerFactory();
//从工厂里面拿到一个scheduler实例
//计划表(可能翻译的不太贴切),现在我们有了要做的内容,
//与调度程序交互的主要API
/*
* Scheduler的生命期,从SchedulerFactory创建它时开始,
到Scheduler调用shutdown()方法时结束;Scheduler被创建后,
可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作
(如暂停Trigger)。但是,Scheduler只有在调用start()方法后,
才会真正地触发trigger(即执行job)
*/
Scheduler scheduler = factory.getScheduler();
//具体任务.
//用于定义作业的实例
//JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
//Trigger(即触发器) - 定义执行给定作业的计划的组件
//TriggerBuilder - 用于定义/构建触发器实例
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
}
}