quartz 是一个Java调度框架,支持cron表达式,支持集群。
官方地址 http://www.quartz-scheduler.org/
第一讲,先看一个demo。
1 :从 http://www.quartz-scheduler.org/downloads/ 下载文件 http://d2zwv9pap9ylyd.cloudfront.net/quartz-2.2.3-distribution.tar.gz 下载到的是 quartz-2.2.3-distribution.tar.gz 解压后有这些文件夹
- docs:quartz文档
- examples:例子 :这里有许多demo可以阅读。
- javadoc:quartz的api
- lib :quartz框架所需的jar包
- licenses
- src:quartz源码
2 创建工程
新建普通的java项目,然后导入lib下的所有jar包。然后写代码:
package com.wang;
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.out.println(" hello world ");
}
}
package com.wang;
import java.util.Date;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.JobDetailImpl;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.CronTriggerImpl;
public class DemoTest {
public static void main(String[] args) throws Exception {
JobDetailImpl jobDetail = new JobDetailImpl();
jobDetail.setGroup("test-group");
jobDetail.setName("test-name");
jobDetail.setJobClass(MyJob.class);
CronTriggerImpl trigger = new CronTriggerImpl();
// cron表达式,表示每2秒执行一次。
trigger.setCronExpression("*/2 * * * * ?");
trigger.setStartTime(new Date());
trigger.setName("test-trigger-name");
trigger.setGroup("test-trigger-group");
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
}
还有一个使用maven创建的demo如下
一:
maven 依赖:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
在CLASSPATH下创建 quartz.properties 文件
#指定了调度器名字
org.quartz.scheduler.instanceName = MyScheduler
#线程池最大线程数量
org.quartz.threadPool.threadCount = 3
#指定调度器存储任务的方式,这个是存储在内存中。
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
package com.wang.hbt;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println(new Date());
}
}
package com.wang.hbt;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class Main {
public static void main(String[] args) throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();
scheduler.scheduleJob(job, trigger);
}
}