Quartz概念
Quartz运行环境
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.2</version>
</dependency>
public class MyJobTest implements Job {
public MyJobTest() {
}
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("execute job");
}
}
public class QuartzTest {
public static void main(String[] args) {
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
JobDetail job = newJob(MyJobTest.class).withIdentity("job1","group1").build();
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
scheduler.scheduleJob(job, trigger);
Thread.sleep(100000);
scheduler.shutdown();
} catch (SchedulerException e) {
//
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
Quartz的设计模式
### Builder模式
JobDetail job = newJob(HelloJob.class) .withIdentity("job1", "group1") .build(); // Trigger the job to run now, and then repeat every 40 seconds Trigger trigger = newTrigger() .withIdentity("trigger1", "group1") .startNow() .withSchedule(simpleSchedule() .withIntervalInSeconds(40) .repeatForever()) .build(); // Tell quartz to schedule the job using our trigger scheduler.scheduleJob(job, trigger);
### Factory模式
public class QuartzTest { public static void main(String[] args) { try { // Grab the Scheduler instance from the Factory Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // and start it off scheduler.start(); scheduler.shutdown(); } catch (SchedulerException se) { se.printStackTrace(); } } }
Quart的体系结构
Quartz的几个常用API
Maven依赖包
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.2</version>
</dependency>
入门案例
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloJob implements Job {
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//输出当前时间的任务
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH24:mm:ss");
String dateString=df.format(date);
System.out.println("输出:"+dateString);
}
}
#######################################################
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//1.创建调度器(scheduler)
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//2.任务实例(JobDetail)
JobDetail job1 = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
//3.触发器(Trigger)
// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
//任务关联
scheduler.scheduleJob(job1,trigger);
scheduler.start();
}
}