Quartz是什么
Java中的**定时任务**调度框架!!!
Java中我们可以常看到定时框架:
- Quartz框架
- Spring Task框架
但是Quartz框架使用的成都比较多,调度简单
- Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。
- Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或EJBs。
- Quartz框架是一个开源的企业级任务调度服务,已经被作为任务调度的良好解决方案
- 任务调度涉及多线程并发、线程池维护、运行时间规则解析、运行现场的保护以恢复等方面
Quartz三大核心概念:
- 任务 JOB:要执行的动作,Quartz提供Job接口来支持任务定义
- 触发器 Trigger: 什么时候被执行,Quartz提供Trigger类及其子类支持触发器功能
- 调度器 Scheduler :负责绑定触发器和任务 进行任务调度,Quartz提供了Scheduler接口,将工作任务和触发器绑定,保证任务可以在正确的时间执行!!
Quartz的功能是什么?(定时任务)
举例:有一个餐馆每天的晚上11点打烊的时候,要自动计算今日的营业额,这里我们就可以有一个定时任务,定在营业当天的晚上11点
第一步:导入依赖
Quartz需要的依赖包(Maven管理):
<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>
第二步:创建MyJob类,并实现org.quartz.Job接口
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("定时任务启动");
//可以调用自定义方法
}
}
第三步:编写测试类TestQuartz(SimpleTriggerImpl,CronTriggerImpl)
二选一:CronTriggerImpl更强大,功能更全,使用较多,允许用户更精准地控制任务的运行日期和时间,而不仅仅是定义工作的频度
public class TestQuartz {
public static void main(String[] args) throws Exception{
//1.创建一个任务
JobDetail jobDetail=new JobDetailImpl("myJob","group",MyJob.class);
//2.解释:创建一个触发器(简单复杂触发器SimpleTriggerImpl),每间隔2秒执行1次 一共执行10次!
Trigger trigger =new SimpleTriggerImpl("trigger",10,2000);
//3.创建一个调度器
Scheduler scheduler=new StdSchedulerFactory().getScheduler();
//4.调度任务
scheduler.scheduleJob(jobDetail,trigger);
//5.启动
scheduler.start();
// 关闭调度
//sched.shutdown();
}
}
public class TestQuartz {
public static void main(String[] args) throws Exception{
//1.创建一个任务
JobDetail jobDetail=new JobDetailImpl("myJob","group",MyJob.class);
//2.解释:创建一个触发器(简单复杂触发器SimpleTriggerImpl),每间隔2秒执行1次 一共执行10次!
Trigger trigger=new CronTriggerImpl("trigger","group","0 35 11 * * ? *");
//3.创建一个调度器
Scheduler scheduler=new StdSchedulerFactory().getScheduler();
//4.调度任务
scheduler.scheduleJob(jobDetail,trigger);
//5.启动
scheduler.start();
// 关闭调度
//sched.shutdown();
}
}
0 35 11 * * ? *:这是一个cron表达式,可以自己编写,也可以自动生成。
涉及到cron表达式
代码中分析:SimpleTriggerImpl,CronTriggerImpl区别
Quartz整合SSM例子
- Quartz整合SSM:本人写的一篇Quartz和SSM整合教程,可粘贴复制,点击链接跳转