jdk中Timer的缺陷:
1、Timer有且仅有一个线程去执行定时任务,如果存在多个任务,且任务时间过长,会导致执行效果与预期不符。(不能实现并发)
2、如果TimerTask抛出RuntimeException,Timer会停止所有任务的执行。 Timer的使用禁区:
1、对时效性要求较高的多任务并发作业 2、对复杂任务的调度
Quartz 是功能强大的开源任务调度框架,弥补了Timer的不足。
特点:
- 灵活可配置的调度功能,能很好的与spring集成;
- 灵活的应用方式:允许灵活定义调度的时间表,并可以将触发器和任务进行关联映射;
- 分布式和集群能力;
体系结构:(重点了解)
- jobDetail
- trigger (触发器)包括SimpleTriggle 和CronTrigger
- scheduler
举个栗子:
首先要在pom.xml文件中加入依赖:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
Date execTime = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current exec time is:"+sf.format(execTime));
System.out.println("HelloWorld");
}
}
package com.imooc.quartz;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个JobDetail实例,将该实例与HelloJob.class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
.withIdentity("myJob", "group1").build();
//创建一个Triggle实例,定义job立即执行,并且每隔两秒重复执行一次
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2).repeatForever())
.build();
//创建schedul实例
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.start();
Date now = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current time is:"+sf.format(now));
scheduler.scheduleJob(jobDetail, trigger);
}
}
设计模式:
- Builder模式、组建模式、Factory模式、链式写法
核心概念:
- 调度器 :定时定频
- 任务:业务逻辑
- 触发器:生效的时间
重要组成:
- Job
- JobDetail
- JobBuilder
- JobStore
- Trigger
- TriggerBuilder
- ThreadPool
- Scheduler
- calendar
- 监听器
常用CronTrigger
Cron 表达式 秒 分 时 日 月 周 年
最后
以上就是无辜飞机最近收集整理的关于定时任务调度工具之Quartz的全部内容,更多相关定时任务调度工具之Quartz内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复