前提信息:
quartz版本信息: 2.1.5
假设读者知道:cron表达式
附件:
quartz.jar及实例代码
实例代码
job
- package com.qingshan.job;
- import java.util.Date;
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- import org.quartz.JobKey;
- /**
- * 主要实现打印当前时间的job
- * @author qingshan
- * @date 2012-06-07
- *
- */
- public class JobDemo implements Job {
- @Override
- public void execute(JobExecutionContext context)
- throws JobExecutionException {
- JobKey jobKey = context.getJobDetail().getKey();//job标识
- System.out.println("组:"+jobKey.getGroup()+"--->队"+jobKey.getName()+"\t===>当前时间:"+ String.format("%tF %1$tT",new Date()));
- }
- }
运行:
- package com.qingshan.job;
- import java.util.Date;
- import org.quartz.CronScheduleBuilder;
- import org.quartz.CronTrigger;
- import org.quartz.JobBuilder;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.SchedulerMetaData;
- import org.quartz.TriggerBuilder;
- import org.quartz.impl.StdSchedulerFactory;
- /**
- * 用于配置/运行/关闭程序调度器
- * 注:当前类使用的程序调度器是CronTrigger类型的,支持cron表达式
- * @author qingshan
- * @date 2012-06-07
- */
- public class RunJob {
- public static void main(String[] args) throws SchedulerException {
- // 创建工厂
- SchedulerFactory factory = new StdSchedulerFactory();
- // 创建程序调度器实例
- Scheduler scheduler = factory.getScheduler();
- // 创建一个job
- JobDetail job = JobBuilder.newJob(JobDemo.class)
- .withIdentity("job", "group-job").build();
- // 创建触发器:"* * * * * ?"==>每秒都很执行一次
- CronTrigger trigger = TriggerBuilder.newTrigger()
- .withIdentity("trigger", "group-trigger")
- .withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ?"))
- .build();
- // 执行的日期时间
- Date date = scheduler.scheduleJob(job, trigger);
- System.out.println(job.getKey() + " 在: "
- + String.format("%tF %1$tT", date) + "已经开启 cron表达式: "
- + trigger.getCronExpression());
- // 开启所有已经配置job
- scheduler.start();
- // 3秒后关闭当前程序调度器
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- // 关闭程序调度器
- scheduler.shutdown(true);
- // 统计执行的job个数
- SchedulerMetaData metaData = scheduler.getMetaData();
- System.out.println("已经执行 " + metaData.getNumberOfJobsExecuted()+ " 个job");
- }
- }