Quartz简介
Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统。Quartz可以用来创建执行数十,数百乃至数万个作业的简单或复杂的计划; 作业的任务被定义为标准的Java组件,它可以执行几乎任何你可能编程的任务。Quartz Scheduler包含许多企业级功能,例如支持JTA事务和集群。
如果您的应用程序具有需要在特定时间内发生的任务,或者如果您的系统经常性维护作业,那么Quartz可能是您理想的解决方案。
Quartz定时任务实现
导入jar包(maven依赖)
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency>
示例代码
自定义一个任务类实现Quartz的Job接口,并重写execute()函数
package com.qgx.quartz.job; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class MyJob implements Job{ public void execute(JobExecutionContext arg0) throws JobExecutionException { System.err.println("Hello Quartz!"); } }
然后定义一个测试类,需要将定义相应的任务(JobDetial)和触发器(trigger),并将其加到一个执行日程(Scheduler)中,启动日程。
package com.qgx.quartz; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import com.qgx.quartz.job.MyJob; public class QuartzTest { public static void main(String[] args) throws Exception{ JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("job1", "group1") .build(); // Trigger the job to run now, and then repeat every 5 seconds Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("trigger1", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(5) .repeatForever()) .build(); // Grab the Scheduler instance from the Factory Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // and start it off scheduler.start(); // Tell quartz to schedule the job using our trigger scheduler.scheduleJob(job, trigger); } }
执行结果:每5秒执行一次