一:介绍

1.应用场景

  基本上任何公司都会用到调度这个功能, 比如我们公司需要定期执行调度生成报表, 或者比如博客什么的定时更新之类的,都可以靠Quartz来完成。正如官网所说,小到独立应用大到大型电子商务网站, Quartz都能胜任。

2..内部组件结构 

  Quartz拥有完善的事件和监听体系,大部分组件都拥有事件,如任务执行前事件、任务执行后事件、触发器触发前事件、触发后事件、调度器开始事件、关闭事件等等,可以注册相应的监听器处理感兴趣的事件。

  下图描述了Scheduler的内部组件结构,SchedulerContext提供Scheduler全局可见的上下文信息,每一个任务都对应一个JobDataMap,虚线表达的JobDataMap表示对应有状态的任务:

  

  

二:普通触发器程序(来自官网)

1.新建maven项目

  

2.pom文件

  这个版本是2.2.1的maven库。

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>Quratz</groupId>
<artifactId>job</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<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>
</dependencies> </project>

3.JobDetail代码

 import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class MyJob implements Job {
public MyJob(){}
public void execute(JobExecutionContext context)throws JobExecutionException{
System.err.println("Hello World! MyJob is executing.");
}
}

4.设置触发器

 import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory; import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule; public class SchedulerTest { public static void main(String[] args)throws Exception{
Scheduler scheduler=null;
SchedulerFactory schedulerfactory = new StdSchedulerFactory();
scheduler = schedulerfactory.getScheduler();
// define the job and tie it to our MyJob class
JobDetail job = newJob(MyJob.class)
.withIdentity("job1", "group1")
.build(); // Trigger the job to run now
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(5)
.repeatForever())
.build(); // Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);
// 启动调度
scheduler.start(); Thread.sleep(100); // 停止调度
// scheduler.shutdown();
}
}

5.效果

  

三:Cron触发程序

1.cron表达式触发器

 import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory; import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule; public class SchedulerCronTest { public static void main(String[] args)throws Exception{
Scheduler scheduler=null;
SchedulerFactory schedulerfactory = new StdSchedulerFactory();
scheduler = schedulerfactory.getScheduler();
// define the job and tie it to our MyJob class
JobDetail job = newJob(MyJob.class)
.withIdentity("job1", "group1")
.build(); // Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?"))
.build(); // Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);
// 启动调度
scheduler.start(); Thread.sleep(100); // 停止调度
// scheduler.shutdown();
}
}

7.效果

  

最新文章

  1. Content Security Policy 入门教程
  2. linux配置3-安装tomcat
  3. sqlalchemy 实体属性提前加载
  4. 在 Mac OS X 上创建的 .NET 命令行程序访问数据库 (使用Entity Framework 7 )
  5. zoj 3717 - Balloon(2-SAT)
  6. 《C++编程规范》
  7. CSU 1116 Kingdoms(枚举最小生成树)
  8. 智能车学习(十五)&mdash;&mdash;K60野火2013版例程
  9. iOS-常用的辅助工具软件
  10. POI中getLastRowNum() 和getLastCellNum()的区别 hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1
  11. 幾種方法實現C語言Macro for debug
  12. iOS 原生二维码扫描,带扫描框和扫描过程动画
  13. HDU - 1035
  14. springcloud第七步:fegin客户端调用工具
  15. Spring+thymeleaf
  16. SparkContext初始化之SparkScheduler初始化
  17. redis简记
  18. iptables -F 与 -X 区别
  19. 关于Centos7 firewalld防火墙开放端口后仍不能访问ftp和nginx的问题解决
  20. 蒙特卡罗(Monte Carlo)方法简介

热门文章

  1. Responsive响应式设计
  2. SpringBoot定制错误的Json数据
  3. SpringBoot整合国际化功能
  4. STM32F103X datasheet学习笔记---GPIOs and AFIOs
  5. 如何判断mac地址时multicast还是broadcast ?
  6. dell r720服务器raid5安装centos6.5系统
  7. 安装最新版的2016版Pycharm后,激活码
  8. 关于报错stale element reference: element is not attached to the page document处理
  9. 论文笔记 SSD: Single Shot MultiBox Detector
  10. 从LeNet-5到DenseNet