在我们配置quartz.properties文件是Quartz会默认的读取jar包下面的quartz.properties文件
# Default Properties file for use by StdSchedulerFactory
# to create a Quartz Scheduler Instance, if a different
# properties file is not explicitly specified.
#
org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 10
org.quartz.threadPool.threadPriority: 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true
org.quartz.jobStore.misfireThreshold: 60000
org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
Quartz默认的起了一个拥有10个线程的线程池
看下面这个例子
LoadJob.java
package cn.zto.job;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoadJob
implements Job
{
public static final String DELAY_TIME = "delay time";
public void execute(JobExecutionContext context) throws JobExecutionException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
JobKey jobKey = context.getJobDetail().getKey();
System.out.println(dateFormat.format(new Date()) + " : " + jobKey + " 执行 ");
long delayTime = context.getJobDetail().getJobDataMap().getLong("delay time");
try {
Thread.sleep(delayTime);
}
catch (Exception e)
{
}
System.out.println(dateFormat.format(new Date()) + " : " + jobKey + "完成");
}
}
LoadExample.java
package cn.zto.app;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import org.quartz.DateBuilder;
import org.quartz.DateBuilder.IntervalUnit;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SchedulerMetaData;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cn.zto.job.LoadJob;
public class LoadExample
{
private int _numberOfJobs = 100;
public LoadExample(int inNumberOfJobs) {
this._numberOfJobs = inNumberOfJobs;
}
public void run() throws Exception {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
System.out.println("------- 初始化完成 -----------");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
for (int count = 1; count <= this._numberOfJobs; ++count) {
JobDetail job = JobBuilder.newJob(LoadJob.class).withIdentity("job" + count, "group_1").requestRecovery().build();
long timeDelay = (long)(Math.random() * 2500.0D);
job.getJobDataMap().put("delay time", timeDelay);
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger_" + count, "group_1")
.startAt(DateBuilder.futureDate(10000 + count * 100, DateBuilder.IntervalUnit.MILLISECOND))
.build();
sched.scheduleJob(job, trigger);
if (count % 25 == 0) {
System.out.println("...scheduled " + count + " jobs");
}
}
System.out.println("------- 开始Scheduler ----------------");
sched.start();
System.out.println("------- Scheduler调用job结束 -----------------");
System.out.println("------- 等待1分钟... -----------");
try {
Thread.sleep(60000L);
}
catch (Exception e) {
}
System.out.println("------- 关闭Scheduler ---------------------");
sched.shutdown(true);
System.out.println("------- 关闭完成 -----------------");
SchedulerMetaData metaData = sched.getMetaData();
System.out.println("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
}
public static void main(String[] args) throws Exception {
int numberOfJobs = 100;
if (args.length == 1) {
numberOfJobs = Integer.parseInt(args[0]);
}
if (args.length > 1) {
System.out.println("Usage: java " + LoadExample.class.getName() + "[# of jobs]");
return;
}
LoadExample example = new LoadExample(numberOfJobs);
example.run();
}
}
运行结果如下:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
------- 初始化完成 -----------
...scheduled 25 jobs
...scheduled 50 jobs
...scheduled 75 jobs
...scheduled 100 jobs
------- 开始Scheduler ----------------
------- Scheduler调用job结束 -----------------
------- 等待1分钟... -----------
2014年08月01日 10时20分46秒 : group_1.job1 执行
2014年08月01日 10时20分46秒 : group_1.job2 执行
2014年08月01日 10时20分46秒 : group_1.job3 执行
2014年08月01日 10时20分46秒 : group_1.job4 执行
2014年08月01日 10时20分46秒 : group_1.job1完成
2014年08月01日 10时20分46秒 : group_1.job5 执行
2014年08月01日 10时20分47秒 : group_1.job6 执行
2014年08月01日 10时20分47秒 : group_1.job7 执行
2014年08月01日 10时20分47秒 : group_1.job8 执行
2014年08月01日 10时20分47秒 : group_1.job9 执行
2014年08月01日 10时20分47秒 : group_1.job4完成
2014年08月01日 10时20分47秒 : group_1.job10 执行
2014年08月01日 10时20分47秒 : group_1.job11 执行
2014年08月01日 10时20分47秒 : group_1.job3完成
2014年08月01日 10时20分47秒 : group_1.job12 执行
2014年08月01日 10时20分47秒 : group_1.job13 执行
2014年08月01日 10时20分47秒 : group_1.job10完成
2014年08月01日 10时20分47秒 : group_1.job14 执行
2014年08月01日 10时20分48秒 : group_1.job13完成
2014年08月01日 10时20分48秒 : group_1.job15 执行
2014年08月01日 10时20分48秒 : group_1.job5完成
2014年08月01日 10时20分48秒 : group_1.job16 执行
2014年08月01日 10时20分48秒 : group_1.job7完成
2014年08月01日 10时20分48秒 : group_1.job17 执行
2014年08月01日 10时20分48秒 : group_1.job2完成
2014年08月01日 10时20分48秒 : group_1.job18 执行
2014年08月01日 10时20分48秒 : group_1.job12完成
2014年08月01日 10时20分48秒 : group_1.job19 执行
2014年08月01日 10时20分48秒 : group_1.job6完成
2014年08月01日 10时20分48秒 : group_1.job20 执行
2014年08月01日 10时20分48秒 : group_1.job16完成
2014年08月01日 10时20分48秒 : group_1.job21 执行
2014年08月01日 10时20分49秒 : group_1.job17完成
2014年08月01日 10时20分49秒 : group_1.job22 执行
2014年08月01日 10时20分49秒 : group_1.job8完成
2014年08月01日 10时20分49秒 : group_1.job23 执行
2014年08月01日 10时20分49秒 : group_1.job15完成
2014年08月01日 10时20分49秒 : group_1.job24 执行
2014年08月01日 10时20分49秒 : group_1.job14完成
2014年08月01日 10时20分49秒 : group_1.job25 执行
2014年08月01日 10时20分49秒 : group_1.job9完成
2014年08月01日 10时20分49秒 : group_1.job26 执行
2014年08月01日 10时20分49秒 : group_1.job11完成
2014年08月01日 10时20分49秒 : group_1.job27 执行
2014年08月01日 10时20分50秒 : group_1.job19完成
2014年08月01日 10时20分50秒 : group_1.job28 执行
2014年08月01日 10时20分50秒 : group_1.job18完成
2014年08月01日 10时20分50秒 : group_1.job29 执行
2014年08月01日 10时20分50秒 : group_1.job25完成
2014年08月01日 10时20分50秒 : group_1.job30 执行
2014年08月01日 10时20分51秒 : group_1.job28完成
2014年08月01日 10时20分51秒 : group_1.job31 执行
2014年08月01日 10时20分51秒 : group_1.job20完成
2014年08月01日 10时20分51秒 : group_1.job32 执行
2014年08月01日 10时20分51秒 : group_1.job21完成
2014年08月01日 10时20分51秒 : group_1.job33 执行
2014年08月01日 10时20分51秒 : group_1.job24完成
2014年08月01日 10时20分51秒 : group_1.job34 执行
2014年08月01日 10时20分51秒 : group_1.job34完成
2014年08月01日 10时20分51秒 : group_1.job35 执行
2014年08月01日 10时20分51秒 : group_1.job22完成
2014年08月01日 10时20分51秒 : group_1.job36 执行
2014年08月01日 10时20分51秒 : group_1.job23完成
2014年08月01日 10时20分51秒 : group_1.job37 执行
2014年08月01日 10时20分51秒 : group_1.job26完成
2014年08月01日 10时20分51秒 : group_1.job38 执行
2014年08月01日 10时20分51秒 : group_1.job36完成
2014年08月01日 10时20分51秒 : group_1.job39 执行
2014年08月01日 10时20分51秒 : group_1.job27完成
2014年08月01日 10时20分51秒 : group_1.job40 执行
2014年08月01日 10时20分51秒 : group_1.job38完成
2014年08月01日 10时20分51秒 : group_1.job41 执行
2014年08月01日 10时20分52秒 : group_1.job32完成
2014年08月01日 10时20分52秒 : group_1.job42 执行
2014年08月01日 10时20分52秒 : group_1.job42完成
2014年08月01日 10时20分52秒 : group_1.job43 执行
2014年08月01日 10时20分52秒 : group_1.job31完成
2014年08月01日 10时20分52秒 : group_1.job44 执行
2014年08月01日 10时20分52秒 : group_1.job39完成
2014年08月01日 10时20分52秒 : group_1.job45 执行
2014年08月01日 10时20分52秒 : group_1.job30完成
2014年08月01日 10时20分52秒 : group_1.job46 执行
2014年08月01日 10时20分52秒 : group_1.job33完成
2014年08月01日 10时20分52秒 : group_1.job29完成
2014年08月01日 10时20分52秒 : group_1.job47 执行
2014年08月01日 10时20分52秒 : group_1.job48 执行
2014年08月01日 10时20分53秒 : group_1.job37完成
2014年08月01日 10时20分53秒 : group_1.job49 执行
2014年08月01日 10时20分53秒 : group_1.job35完成
2014年08月01日 10时20分53秒 : group_1.job50 执行
2014年08月01日 10时20分53秒 : group_1.job40完成
2014年08月01日 10时20分53秒 : group_1.job51 执行
2014年08月01日 10时20分53秒 : group_1.job49完成
2014年08月01日 10时20分53秒 : group_1.job52 执行
2014年08月01日 10时20分53秒 : group_1.job46完成
2014年08月01日 10时20分53秒 : group_1.job53 执行
2014年08月01日 10时20分53秒 : group_1.job41完成
2014年08月01日 10时20分53秒 : group_1.job54 执行
2014年08月01日 10时20分54秒 : group_1.job44完成
2014年08月01日 10时20分54秒 : group_1.job55 执行
2014年08月01日 10时20分54秒 : group_1.job47完成
2014年08月01日 10时20分54秒 : group_1.job56 执行
2014年08月01日 10时20分54秒 : group_1.job48完成
2014年08月01日 10时20分54秒 : group_1.job57 执行
2014年08月01日 10时20分54秒 : group_1.job43完成
2014年08月01日 10时20分54秒 : group_1.job58 执行
2014年08月01日 10时20分54秒 : group_1.job45完成
2014年08月01日 10时20分54秒 : group_1.job59 执行
2014年08月01日 10时20分54秒 : group_1.job55完成
2014年08月01日 10时20分54秒 : group_1.job60 执行
2014年08月01日 10时20分54秒 : group_1.job50完成
2014年08月01日 10时20分54秒 : group_1.job61 执行
2014年08月01日 10时20分55秒 : group_1.job52完成
2014年08月01日 10时20分55秒 : group_1.job62 执行
2014年08月01日 10时20分55秒 : group_1.job54完成
2014年08月01日 10时20分55秒 : group_1.job63 执行
2014年08月01日 10时20分55秒 : group_1.job53完成
2014年08月01日 10时20分55秒 : group_1.job64 执行
2014年08月01日 10时20分55秒 : group_1.job51完成
2014年08月01日 10时20分55秒 : group_1.job65 执行
2014年08月01日 10时20分55秒 : group_1.job56完成
2014年08月01日 10时20分55秒 : group_1.job66 执行
2014年08月01日 10时20分55秒 : group_1.job58完成
2014年08月01日 10时20分55秒 : group_1.job67 执行
2014年08月01日 10时20分55秒 : group_1.job57完成
2014年08月01日 10时20分55秒 : group_1.job68 执行
2014年08月01日 10时20分55秒 : group_1.job67完成
2014年08月01日 10时20分55秒 : group_1.job69 执行
2014年08月01日 10时20分55秒 : group_1.job60完成
2014年08月01日 10时20分55秒 : group_1.job70 执行
2014年08月01日 10时20分56秒 : group_1.job59完成
2014年08月01日 10时20分56秒 : group_1.job71 执行
2014年08月01日 10时20分56秒 : group_1.job62完成
2014年08月01日 10时20分56秒 : group_1.job72 执行
2014年08月01日 10时20分56秒 : group_1.job69完成
2014年08月01日 10时20分56秒 : group_1.job73 执行
2014年08月01日 10时20分56秒 : group_1.job61完成
2014年08月01日 10时20分56秒 : group_1.job74 执行
2014年08月01日 10时20分56秒 : group_1.job74完成
2014年08月01日 10时20分56秒 : group_1.job75 执行
2014年08月01日 10时20分56秒 : group_1.job72完成
2014年08月01日 10时20分56秒 : group_1.job76 执行
2014年08月01日 10时20分56秒 : group_1.job76完成
2014年08月01日 10时20分56秒 : group_1.job77 执行
2014年08月01日 10时20分56秒 : group_1.job71完成
2014年08月01日 10时20分56秒 : group_1.job78 执行
2014年08月01日 10时20分56秒 : group_1.job63完成
2014年08月01日 10时20分56秒 : group_1.job79 执行
2014年08月01日 10时20分57秒 : group_1.job68完成
2014年08月01日 10时20分57秒 : group_1.job80 执行
2014年08月01日 10时20分57秒 : group_1.job66完成
2014年08月01日 10时20分57秒 : group_1.job81 执行
2014年08月01日 10时20分57秒 : group_1.job65完成
2014年08月01日 10时20分57秒 : group_1.job82 执行
2014年08月01日 10时20分57秒 : group_1.job80完成
2014年08月01日 10时20分57秒 : group_1.job83 执行
2014年08月01日 10时20分57秒 : group_1.job64完成
2014年08月01日 10时20分57秒 : group_1.job84 执行
2014年08月01日 10时20分57秒 : group_1.job70完成
2014年08月01日 10时20分57秒 : group_1.job85 执行
2014年08月01日 10时20分57秒 : group_1.job75完成
2014年08月01日 10时20分57秒 : group_1.job86 执行
2014年08月01日 10时20分57秒 : group_1.job79完成
2014年08月01日 10时20分57秒 : group_1.job87 执行
2014年08月01日 10时20分57秒 : group_1.job84完成
2014年08月01日 10时20分57秒 : group_1.job88 执行
2014年08月01日 10时20分57秒 : group_1.job81完成
2014年08月01日 10时20分57秒 : group_1.job89 执行
2014年08月01日 10时20分58秒 : group_1.job86完成
2014年08月01日 10时20分58秒 : group_1.job90 执行
2014年08月01日 10时20分58秒 : group_1.job83完成
2014年08月01日 10时20分58秒 : group_1.job91 执行
2014年08月01日 10时20分58秒 : group_1.job78完成
2014年08月01日 10时20分58秒 : group_1.job92 执行
2014年08月01日 10时20分58秒 : group_1.job82完成
2014年08月01日 10时20分58秒 : group_1.job93 执行
2014年08月01日 10时20分58秒 : group_1.job92完成
2014年08月01日 10时20分58秒 : group_1.job94 执行
2014年08月01日 10时20分58秒 : group_1.job87完成
2014年08月01日 10时20分58秒 : group_1.job95 执行
2014年08月01日 10时20分58秒 : group_1.job73完成
2014年08月01日 10时20分58秒 : group_1.job96 执行
2014年08月01日 10时20分58秒 : group_1.job94完成
2014年08月01日 10时20分58秒 : group_1.job97 执行
2014年08月01日 10时20分58秒 : group_1.job89完成
2014年08月01日 10时20分58秒 : group_1.job98 执行
2014年08月01日 10时20分59秒 : group_1.job77完成
2014年08月01日 10时20分59秒 : group_1.job99 执行
2014年08月01日 10时20分59秒 : group_1.job98完成
2014年08月01日 10时20分59秒 : group_1.job100 执行
2014年08月01日 10时20分59秒 : group_1.job93完成
2014年08月01日 10时20分59秒 : group_1.job85完成
2014年08月01日 10时20分59秒 : group_1.job91完成
2014年08月01日 10时20分59秒 : group_1.job97完成
2014年08月01日 10时20分59秒 : group_1.job88完成
2014年08月01日 10时21分00秒 : group_1.job90完成
2014年08月01日 10时21分00秒 : group_1.job96完成
2014年08月01日 10时21分01秒 : group_1.job100完成
2014年08月01日 10时21分01秒 : group_1.job95完成
2014年08月01日 10时21分01秒 : group_1.job99完成
------- 关闭Scheduler ---------------------
------- 关闭完成 -----------------
Executed 100 jobs.