狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 !
Quartz任务调度
课程目标 :
了解Quartz框架 : 任务(Job) 触发器(Trigger) 调度器(Scheduler)
学会使用Quartz框架编写定时任务
学会使用Spring整合Quaetz框架
任务调度
任务调度 : 根据时间 , 执行任务 .
类似闹钟.
Quartz框架
OpenSymphony开源组织的一个开源项目
官网 : http://www.quartz-scheduler.org/
核心概念 : 任务(Job) 触发器(Trigger) 调度器(Scheduler)
工作原理 :
任务 : 需要执行的具体工作
触发器 : 在特定的时间出发任务的执行
调度器 : 任务的实际执行者 , 负责粘合任务和触发器
Quartz环境初始化
Maven依赖 :
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>
Quartz之任务
Quartz之触发器
Quartz之调度器
RemindJob.java
package cn.quartz; import org.quartz.*; public class RemindJob implements Job { public RemindJob() { } //通过参数jobExecutionContext可以获取调度上下文的各种信息,如任务名称等等 //job接口中只有一个execute方法 , 在实现类中实现该方法以执行具体任务 @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { //提醒服务类,封装提醒业务 System.out.println("正在执行中..."); } }
Test.java
package cn.quartz; import org.quartz.*; import org.quartz.impl.JobDetailImpl; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.triggers.SimpleTriggerImpl; public class Test { public static void main(String[] args) throws Exception { //创建job (任务) JobDetail jobDetail = new JobDetailImpl("myjob","group",RemindJob.class); //创建触发器 SimpleTrigger trigger = new SimpleTriggerImpl("trigRemindJob",SimpleTrigger.REPEAT_INDEFINITELY,3000); //创建调度器 SchedulerFactory sfc = new StdSchedulerFactory(); Scheduler scheduler = sfc.getScheduler(); //注册任务和触发器 scheduler.scheduleJob(jobDetail,trigger); //开启和关闭调度器 scheduler.start(); Thread.sleep(20000); scheduler.shutdown(); } }
运行结果