我是靠谱客的博主 无辜飞机,这篇文章主要介绍定时任务调度工具之Quartz,现在分享给大家,希望可以做个参考。

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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部