Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统。 Quartz可以用来创建简单或复杂的计划来执行几十,几百甚至几十万个作业; 作业的任务被定义为标准的Java组件,可以执行几乎任何你可以编程他们做的事情。 Quartz Scheduler包括许多企业级功能,例如支持JTA事务和集群。

一.Quartz下载

可以通过官网去下载jar,也可以通过maven。
pom.xml 配置:

1
2
3
4
5
6
7
8
9
10
11
<!-- Quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>

二.Quartz Job

Job 真正需要执行的实体
HelloJob.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.devnp.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloJob implements Job{

public void sayHello(){
System.out.println("Hello World.");
}

public void execute(JobExecutionContext context)
throws JobExecutionException {
// TODO Auto-generated method stub
sayHello();
}
}

三.Quartz 触发器(Trigger)

JobDetail : 设置job
Trigger : 定义的job需要设置触发器,这样Quartz这样可以通过触发器来执行方法。同时触发器可以配置什么时候出发,多久执行一次等。

1
2
3
4
5
6
7
8
9
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("dummyJobName", "group1").build();

//run every 5 seconds
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("dummyTriggerName", "group1")
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5).repeatForever())
.build();

四.测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.devnp;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

import com.devnp.job.HelloJob;

public class QuartzDemo1 {
public static void main(String[] args) {

try {

JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("dummyJobName", "group1").build();

//run every 5 seconds
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("dummyTriggerName", "group1")
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5).repeatForever())
.build();

// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

// and start it off
scheduler.start();

scheduler.scheduleJob(job, trigger);

//scheduler.shutdown();

} catch (SchedulerException se) {
se.printStackTrace();
}
}
}

五.代码下载

QuartzDemo.zip