本文共 1915 字,大约阅读时间需要 6 分钟。
-- Start
Quartz 是一个开源的任务调度框架。
你可以在 Google 中搜索 Quartz,然后到官网去下载最新的 Quartz 发行包。然后将 quartz-all-xxx.jar 添加到自己的 classpath 中,另外,由于 Quartz 本身依赖于一些第三方的组件,所以我们也需要将 lib 目录下的 jar 包也添加到 classpath 中。
import java.util.Date;import org.quartz.DailyTimeIntervalScheduleBuilder;import org.quartz.Job;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;public class Test { public static void main(String[] args) throws Exception { try { // 获得调度器 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // 启动调度器 scheduler.start(); // 定义任务 JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("HelloWorldJob", "defaultGroup") .build(); // 定义触发器 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("HelloWorldJob", "defaultGroup") .withSchedule(DailyTimeIntervalScheduleBuilder .dailyTimeIntervalSchedule() .withIntervalInSeconds(5) // 5 秒执行1次 .withRepeatCount(3)) // 重复3次,共执行4次 .startNow() // 立即启动 .build(); // 调度任务 scheduler.scheduleJob(job, trigger); // 关闭调度器 Thread.sleep(30 * 1000); // 等待 30 秒 scheduler.shutdown(); } catch (SchedulerException se) { se.printStackTrace(); } } public static class HelloJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello World! - " + new Date()); } }}
Quartz 的功能非常丰富,如果你熟悉 Linux 的 crontab 服务,那么你就可以利用 CronTrigger 来定义任务。如果你想让一个任务依赖与另一个任务,那么你就可以利用 JobListener 来达到目的,在 Quartz 发行包的examples文件夹下,你可以找到更多的例子。
-- -- 声 明:转载请注明出处 -- Last Updated on 2012-08-16
-- Written by ShangBo on 2012-07-28 -- End