1.首先创建一个java项目
2.导入quartz-all-1.8.4.jar包
3.写quartz的配置文件
# \u914D\u7F6E\u4E3B\u8C03\u5EA6\u5668\u5C5E\u6027
org.quartz.scheduler.instanceName=QuartzScheduler
org.quartz.scheduler.instanceId=AUTO
# \u914D\u7F6E\u7EBF\u7A0B\u6C60
# Quartz\u7EBF\u7A0B\u6C60\u7684\u5B9E\u73B0\u7C7B
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
# \u7EBF\u7A0B\u6C60\u7684\u7EBF\u7A0B\u6570\u91CF
org.quartz.threadPool.threadCount=3
# \u7EBF\u7A0B\u6C60\u91CC\u7EBF\u7A0B\u7684\u4F18\u5148\u7EA7
org.quartz.threadPool.threadPriority=6
# \u914D\u7F6E\u4F5C\u4E1A\u5B58\u50A8
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
4.写一个类SimpleQuartzJob并且实现job接口代码如下:
package demo;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class SimpleQuartzJob implements Job {
public SimpleQuartzJob() {
}
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("In SimpleQuartzJob - executing its JOB at " + new Date() + " by " + context.getTrigger().getName());//此处是要执行的内容
}
}
5.接下来就是关键代码首先创建一个类(CronTriggerRunner)写一个task方法代码如下:(cron表达式)
cron表达式参考
package demo;
import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class CronTriggerRunner {
public void task() throws SchedulerException {
// Initiate a Schedule Factory
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
// Retrieve a scheduler from schedule factory
Scheduler scheduler = schedulerFactory.getScheduler();
// Initiate JobDetail with job name, job group, and executable job class
JobDetail jobDetail = new JobDetail("jobDetail2", "jobDetailGroup2",SimpleQuartzJob.class);
// Initiate CronTrigger with its name and group name
CronTrigger cronTrigger = new CronTrigger("cronTrigger","triggerGroup2");
try {
// setup CronExpression
CronExpression cexp = new CronExpression("0/5 * * * * ?");//每5秒执行一次
// Assign the CronExpression to CronTrigger
cronTrigger.setCronExpression(cexp);
} catch (Exception e) {
e.printStackTrace();
}
// schedule a job with JobDetail and Trigger
scheduler.scheduleJob(jobDetail, cronTrigger);
// start the scheduler
scheduler.start();
}
}
6.最后一步就是写测试代码,代码如下:
package demo;
import org.quartz.SchedulerException;
public class Test {
public static void main(String[] args) {
CronTriggerRunner cr = new CronTriggerRunner();
SimpleTriggerRunner sr = new SimpleTriggerRunner();
try {
cr.task();
sr.task();
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
另外测试类有一个类SimpleTriggerRunner是另一种实现版本,代码如下:
package demo;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
public class SimpleTriggerRunner {
public void task() throws SchedulerException {
// Initiate a Schedule Factory
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
// Retrieve a scheduler from schedule factory
Scheduler scheduler = schedulerFactory.getScheduler();
// current time
long ctime = System.currentTimeMillis();
// Initiate JobDetail with job name, job group, and executable job class
JobDetail jobDetail = new JobDetail("jobDetail-s1","jobDetailGroup-s1", SimpleQuartzJob.class);
// Initiate SimpleTrigger with its name and group name
SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger",
"triggerGroup-s1");
// set its start up time
simpleTrigger.setStartTime(new Date(ctime));
// set the interval, how often the job should run (10 seconds here)
simpleTrigger.setRepeatInterval(10000);//10秒一次
// set the number of execution of this job, set to 10 times.
// It will run 10 time and exhaust.
simpleTrigger.setRepeatCount(100);
// set the ending time of this job.
// We set it for 60 seconds from its startup time here
// Even if we set its repeat count to 10,
// this will stop its process after 6 repeats as it gets it endtime by
// then.
// simpleTrigger.setEndTime(new Date(ctime + 60000L));
// set priority of trigger. If not set, the default is 5
// simpleTrigger.setPriority(10);
// schedule a job with JobDetail and Trigger
scheduler.scheduleJob(jobDetail, simpleTrigger);
// start the scheduler
scheduler.start();
}
}