J2EE中用的最多的任务调度框架应该就是Quartz了,最近比较清闲,就来详细了解一下Quartz;用这个博客来记录下学习心得,如有错误之处,还请各位大神指点。
1.关键接口
- Scheduler,任务调度的API;它可以用来启动或者终止任务等。
- Job,具体的任务接口;通过实现它,来让任务调度执行具体的任务。
- JobDetail ,用来定义Job的实例。
- Trigger ,触发器用来定义给定的Job应该如何执行。
- JobBuilder ,用来定义/构建Jobdetail实例。
- TriggerBuilder ,用来定义/构建Trigger实例。
2.简单例子
下面是一个简单的例子,创建一个简单的任务调度。
创建一个Job,名为HelloJob:
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("hello job, "+ DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
}
}
实现Job接口中的execute方法,这个方法中是我们需要任务调度执行的具体内容,这里我们只简单打印“hello job”字符串和当前时间。
然后我们就可以编写一个测试类,来执行Job。
首先,创建JobDetail:
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("helloJob", "group1")
.build();
然后,创建Trigger:
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger","group1")
.startNow()
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
//每5s运行一次
.withIntervalInSeconds(5)
//重复运行3次
.withRepeatCount(3)
).build();
最后,获取Scheduler,并启动任务:
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
//添加job,以及其关联的trigger
scheduler.scheduleJob(jobDetail, trigger);
//启动job
scheduler.start();
运行结果,如下图:
版权声明:本文为博主原创文章,未经博主允许不得转载。