定义
Quartz是一个功能丰富的开源作业调度库,可以集成到几乎所有Java应用程序中 —— 从最小的独立应用程序到最大的电子商务系统。Quartz可以用来创建执行多个作业的简单或复杂的计划。
功能
如果你的应用程序包含需要在特定时间执行的任务,那么Quartz可能是你最理想的解决方案。
示例
在pom文件中引入以下依赖:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
新建类:HelloQuartz
public class HelloQuartz implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("Hello Quartz !");
}
}
新建类:SchedulerTest
public class SchedulerTest {
public static void main(String[] args){
SchedulerFactory sf = new StdSchedulerFactory();
try{
Scheduler scheduler = sf.getScheduler();
JobDetail jobDetail = newJob(HelloJob.class).withIdentity("job1","group1").build();
Date runTime = evenMinuteDate(new Date());
//使用simpleTrigger规则,每下一分钟执行一次
Trigger trigger =
newTrigger().withIdentity("trigger1","group1").startAt(runTime).build();
//使用cornTrigger规则,每20秒执行一次
//CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1")
// .withSchedule(cronSchedule("0/20 * * * * ?")).build();
scheduler.scheduleJob(jobDetail,trigger);
scheduler.start();
//程序启动90s后,结束任务调度
Thread.sleep(90L*1000L);
scheduler.shutdown(true);
}catch (SchedulerException se){
se.printStackTrace();
}catch (InterruptedException ie){
ie.printStackTrace();
}
}
}
执行main()
,会在下一分钟打印结果:Hello Quartz !
。