开发工具:STS

代码下载链接:https://github.com/theIndoorTrain/QuartzDemo.git

前言:

接触一个新事物的开始,我们都会产生一些疑问:

Quartz是什么?

Quartz是用来做什么的?

答:

Quartz是一个任务调度框架。说明白点,就是定制任务的。

例如:

每年你过生日时给你发一张生日贺卡;

每周一的6:00给你发一条起床提醒;

每月的15号给你发工资.......

明白了quartz的原理,我们就来进入我们的学习。


项目搭建

1.新建maven项目

2.导入quartz相关依赖

                 <!-- 添加quartz依赖 -->
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>

任务一:

每隔五秒打印一句“Hello world!”;

1.新建一个Job类实现Job接口:

实现:打印系统时间,输出“Hello world!”

 package com.xm.job;

 import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class HelloJob implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException {
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
System.out.println("Job start time: "+sf.format(date));
System.out.println("Hello world!");
} }

2.定义一个Scheduler类:

实现:

(1)定义一个JobDetail,绑定Job

(2)定义一个Trigger,定义任务细节

(3)定义一个Scheduler,绑定JobDetail和Trigger

 package com.xm.scheduler;

 import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; import com.xm.job.HelloJob; public class HelloScheduler { public static void main(String[] args) throws SchedulerException {
/**
* 1.定义一个JobDetail
*2.绑定 HelloJob
*3.定义id,group
*/
JobDetail jobDetail = JobBuilder
.newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build(); /**
* 1.定义一个trigger
* 2.绑定group,name
* 3.指定开始、结束时间
* 4.定义任务细节
*/
Trigger trigger = TriggerBuilder
.newTrigger()
//绑定group,name
.withIdentity("trigger1", "group1")
//从现在开始执行
.startNow()
//指定开始执行时间
//.startAt()
//指定结束执行时间
//.endAt()
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
//执行间隔时间
.withIntervalInSeconds(5)
//重复执行
.repeatForever()
)
.build(); /**
* 1.定义一个SchedulerFactory工厂类
* 2.获得一个Scheduler类
* 3.启动Scheduler
* 4.绑定JobDetail和Trigger
*/
//定义一个SchedulerFactory工厂类
SchedulerFactory factory = new StdSchedulerFactory() ;
//获得一个Scheduler类
Scheduler scheduler = factory.getScheduler();
//启动Scheduler
scheduler.start();
//绑定JobDetail和Trigger
scheduler.scheduleJob(jobDetail, trigger); } }

3.运行结果:

4.代码下载链接:https://github.com/theIndoorTrain/QuartzDemo/tree/f00db42b1eee7043179d129a6be79d6ad2a0c99f


任务二:

每隔五秒打印一句“Hello world!”,5s后开始,30秒后结束

1.修改Scheduler:

 package com.xm.scheduler;

 import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; import com.xm.job.HelloJob; public class HelloScheduler { public static void main(String[] args) throws SchedulerException {
/**
* 1.定义一个JobDetail
*2.绑定 HelloJob
*3.定义id,group
*/
JobDetail jobDetail = JobBuilder
.newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build(); /**
* 1.获取系统时间
* 2.定义开始时间
* 3.定义结束时间
*/
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date nowTime = new Date();
System.out.println("Now Time:"+sf.format(nowTime));
Date startTime = new Date(nowTime.getTime()+5000);
System.out.println("Start Time:"+sf.format(startTime));
Date endTime = new Date(nowTime.getTime()+30000);
System.out.println("End Time:"+sf.format(endTime)); /**
* 1.定义一个trigger
* 2.绑定group,name
* 3.指定开始、结束时间
* 4.定义任务细节
*/
Trigger trigger = TriggerBuilder
.newTrigger()
//绑定group,name
.withIdentity("trigger1", "group1")
//从现在开始执行
//.startNow()
//指定开始执行时间
.startAt(startTime)
//指定结束执行时间
.endAt(endTime)
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
//执行间隔时间
.withIntervalInSeconds(5)
//重复执行
.repeatForever()
)
.build(); /**
* 1.定义一个SchedulerFactory工厂类
* 2.获得一个Scheduler类
* 3.启动Scheduler
* 4.绑定JobDetail和Trigger
*/
//定义一个SchedulerFactory工厂类
SchedulerFactory factory = new StdSchedulerFactory() ;
//获得一个Scheduler类
Scheduler scheduler = factory.getScheduler();
//启动Scheduler
scheduler.start();
//绑定JobDetail和Trigger
scheduler.scheduleJob(jobDetail, trigger); } }

2.运行结果:

3.代码下载链接:https://github.com/theIndoorTrain/QuartzDemo/tree/95b0d2fff333ea1bfb1ce45fef86a8ef3f985133


                                                                2018-07-14

最新文章

  1. C#winfrom播放器动态加载歌词
  2. Finereport集群配置
  3. zabbix_server 已死,但是 subsys 被锁
  4. 如何解决读取到文件末尾时碰到EOF导致的重复输出或者无用输出
  5. template_20_实现智能指针
  6. SqlServer教程:经典SQL语句集锦
  7. JUnit扩展:引入新注解Annotation
  8. OCP读书笔记(14) - 管理数据库性能
  9. POJ 1252 Euro Efficiency
  10. angularJS 系列(六)---$emit(), $on(), $broadcast()的使用
  11. Dynamics 365-CRM又报看不懂的错误了
  12. Image.fromarray的用法
  13. BZOJ1767/Gym207383I CEOI2009 Harbingers 斜率优化、可持久化单调栈、二分
  14. hive异常:创建MySQL时Specified key was too long; max key length is 1000 bytes
  15. [Err] 1111 - Invalid use of group function
  16. ETL探索之旅
  17. Entity Framework实现事务回滚
  18. Android 测量调用方法耗时的方法
  19. Java基础12 类型转换与多态(转载)
  20. ionic资源网站

热门文章

  1. EOF是什么
  2. jQuery UI dialog 隐藏默认关闭按钮
  3. [JAVA][Liferay] Duplicate key value violates unique constraint for resourcepermissionid in Liferay
  4. 总结spring
  5. 构建web应用
  6. JSON FILE NOT FOUND?
  7. Struts1.x 基本原理及注册模块的实现
  8. sharepoint 2010 FieldLookup 的更新方法
  9. c++ stl sort example
  10. Selenium入门系列3 单个元素的定位方法