开发工具:STS

代码下载链接:https://github.com/theIndoorTrain/QuartzDemo.git

前言:

接触一个新事物的开始,我们都会产生一些疑问:

Quartz是什么?

Quartz是用来做什么的?

答:

Quartz是一个任务调度框架。说明白点,就是定制任务的。

例如:

每年你过生日时给你发一张生日贺卡;

每周一的6:00给你发一条起床提醒;

每月的15号给你发工资.......

明白了quartz的原理,我们就来进入我们的学习。


项目搭建

1.新建maven项目

2.导入quartz相关依赖

  1. <!-- 添加quartz依赖 -->
  2. <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
  3. <dependency>
  4. <groupId>org.quartz-scheduler</groupId>
  5. <artifactId>quartz</artifactId>
  6. <version>2.3.0</version>
  7. </dependency>

任务一:

每隔五秒打印一句“Hello world!”;

1.新建一个Job类实现Job接口:

实现:打印系统时间,输出“Hello world!”

  1. package com.xm.job;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5.  
  6. import org.quartz.Job;
  7. import org.quartz.JobExecutionContext;
  8. import org.quartz.JobExecutionException;
  9.  
  10. public class HelloJob implements Job{
  11.  
  12. public void execute(JobExecutionContext context) throws JobExecutionException {
  13. Date date = new Date();
  14. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
  15. System.out.println("Job start time: "+sf.format(date));
  16. System.out.println("Hello world!");
  17. }
  18.  
  19. }

2.定义一个Scheduler类:

实现:

(1)定义一个JobDetail,绑定Job

(2)定义一个Trigger,定义任务细节

(3)定义一个Scheduler,绑定JobDetail和Trigger

  1. package com.xm.scheduler;
  2.  
  3. import org.quartz.JobBuilder;
  4. import org.quartz.JobDetail;
  5. import org.quartz.Scheduler;
  6. import org.quartz.SchedulerException;
  7. import org.quartz.SchedulerFactory;
  8. import org.quartz.SimpleScheduleBuilder;
  9. import org.quartz.Trigger;
  10. import org.quartz.TriggerBuilder;
  11. import org.quartz.impl.StdSchedulerFactory;
  12.  
  13. import com.xm.job.HelloJob;
  14.  
  15. public class HelloScheduler {
  16.  
  17. public static void main(String[] args) throws SchedulerException {
  18. /**
  19. * 1.定义一个JobDetail
  20. *2.绑定 HelloJob
  21. *3.定义id,group
  22. */
  23. JobDetail jobDetail = JobBuilder
  24. .newJob(HelloJob.class)
  25. .withIdentity("job1", "group1")
  26. .build();
  27.  
  28. /**
  29. * 1.定义一个trigger
  30. * 2.绑定group,name
  31. * 3.指定开始、结束时间
  32. * 4.定义任务细节
  33. */
  34. Trigger trigger = TriggerBuilder
  35. .newTrigger()
  36. //绑定group,name
  37. .withIdentity("trigger1", "group1")
  38. //从现在开始执行
  39. .startNow()
  40. //指定开始执行时间
  41. //.startAt()
  42. //指定结束执行时间
  43. //.endAt()
  44. .withSchedule(
  45. SimpleScheduleBuilder.simpleSchedule()
  46. //执行间隔时间
  47. .withIntervalInSeconds(5)
  48. //重复执行
  49. .repeatForever()
  50. )
  51. .build();
  52.  
  53. /**
  54. * 1.定义一个SchedulerFactory工厂类
  55. * 2.获得一个Scheduler类
  56. * 3.启动Scheduler
  57. * 4.绑定JobDetail和Trigger
  58. */
  59. //定义一个SchedulerFactory工厂类
  60. SchedulerFactory factory = new StdSchedulerFactory() ;
  61. //获得一个Scheduler类
  62. Scheduler scheduler = factory.getScheduler();
  63. //启动Scheduler
  64. scheduler.start();
  65. //绑定JobDetail和Trigger
  66. scheduler.scheduleJob(jobDetail, trigger);
  67.  
  68. }
  69.  
  70. }

3.运行结果:

4.代码下载链接:https://github.com/theIndoorTrain/QuartzDemo/tree/f00db42b1eee7043179d129a6be79d6ad2a0c99f


任务二:

每隔五秒打印一句“Hello world!”,5s后开始,30秒后结束

1.修改Scheduler:

  1. package com.xm.scheduler;
  2.  
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5.  
  6. import org.quartz.JobBuilder;
  7. import org.quartz.JobDetail;
  8. import org.quartz.Scheduler;
  9. import org.quartz.SchedulerException;
  10. import org.quartz.SchedulerFactory;
  11. import org.quartz.SimpleScheduleBuilder;
  12. import org.quartz.Trigger;
  13. import org.quartz.TriggerBuilder;
  14. import org.quartz.impl.StdSchedulerFactory;
  15.  
  16. import com.xm.job.HelloJob;
  17.  
  18. public class HelloScheduler {
  19.  
  20. public static void main(String[] args) throws SchedulerException {
  21. /**
  22. * 1.定义一个JobDetail
  23. *2.绑定 HelloJob
  24. *3.定义id,group
  25. */
  26. JobDetail jobDetail = JobBuilder
  27. .newJob(HelloJob.class)
  28. .withIdentity("job1", "group1")
  29. .build();
  30.  
  31. /**
  32. * 1.获取系统时间
  33. * 2.定义开始时间
  34. * 3.定义结束时间
  35. */
  36. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
  37. Date nowTime = new Date();
  38. System.out.println("Now Time:"+sf.format(nowTime));
  39. Date startTime = new Date(nowTime.getTime()+5000);
  40. System.out.println("Start Time:"+sf.format(startTime));
  41. Date endTime = new Date(nowTime.getTime()+30000);
  42. System.out.println("End Time:"+sf.format(endTime));
  43.  
  44. /**
  45. * 1.定义一个trigger
  46. * 2.绑定group,name
  47. * 3.指定开始、结束时间
  48. * 4.定义任务细节
  49. */
  50. Trigger trigger = TriggerBuilder
  51. .newTrigger()
  52. //绑定group,name
  53. .withIdentity("trigger1", "group1")
  54. //从现在开始执行
  55. //.startNow()
  56. //指定开始执行时间
  57. .startAt(startTime)
  58. //指定结束执行时间
  59. .endAt(endTime)
  60. .withSchedule(
  61. SimpleScheduleBuilder.simpleSchedule()
  62. //执行间隔时间
  63. .withIntervalInSeconds(5)
  64. //重复执行
  65. .repeatForever()
  66. )
  67. .build();
  68.  
  69. /**
  70. * 1.定义一个SchedulerFactory工厂类
  71. * 2.获得一个Scheduler类
  72. * 3.启动Scheduler
  73. * 4.绑定JobDetail和Trigger
  74. */
  75. //定义一个SchedulerFactory工厂类
  76. SchedulerFactory factory = new StdSchedulerFactory() ;
  77. //获得一个Scheduler类
  78. Scheduler scheduler = factory.getScheduler();
  79. //启动Scheduler
  80. scheduler.start();
  81. //绑定JobDetail和Trigger
  82. scheduler.scheduleJob(jobDetail, trigger);
  83.  
  84. }
  85.  
  86. }

2.运行结果:

3.代码下载链接:https://github.com/theIndoorTrain/QuartzDemo/tree/95b0d2fff333ea1bfb1ce45fef86a8ef3f985133


                                                                2018-07-14

1.初识Quartz的更多相关文章

  1. 初识Quartz之第一个Quartz实例

    转: 初识Quartz之第一个Quartz实例 2018年04月09日 17:07:31 carson0408 阅读数:366   版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...

  2. 初识quartz 并分析 项目中spring整合quartz的配置【原创+转载】

    初识quartz 并分析 项目中spring整合quartz的配置[原创+转载]2018年01月29日 12:08:07 守望dfdfdf 阅读数:114 标签: quartz 更多个人分类: 工具 ...

  3. 初识Quartz(入门案例)+常用的Cron表达式

    1.Quartz架构图 1.实体层 package cn.happy.entity; //1. public class Plan { //时间 private String date; //任务 p ...

  4. 初识Quartz (一)

    首先大概的了解一下Quartz. 一:首先进入官网去看看什么是quartz.http://www.quartz-scheduler.org/ Quartz是一个功能丰富的开源作业调度库,可以集成到几乎 ...

  5. 初识Quartz(二)

    简单作业: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 package quartz_pr ...

  6. 初识Quartz(三)

    本文将介绍CronTrigger的使用方法,CronTrigger相比 SimpleTrigger可以支持更复杂的作业计划.cron这一观念来自UNIX,在UNIX中,cron是一个运行于后台的守护程 ...

  7. 初识Quartz(一)

    首先需要一个任务: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 package quartz_proj ...

  8. Quartz使用(1) - 初识quartz

    1. 背景 由于最新的工作项目中,需要使用quartz框架,以完成相关的任务的定时执行.经过两周的调研与使用,本系列博客会参考官网及网上相关博客,结合工作项目中的使用,详细介绍quartz的各个方面. ...

  9. Quartz使用(2) - Quartz核心接口Scheduler、Job

    quartz的核心接口如下: 接口 含义 Scheduler scheduler的主要API接口 Job 任务实现接口,期望调度器能够执行 JobDetail 用于定义Job实例 Trigger 调度 ...

随机推荐

  1. Mac 系统变量

    vim .bash_profile ========================= MAVEN_HOME = < ... > export MAVEN_HOME =========== ...

  2. vue中遇到的坑

    如何解决在vue中替换图片.一个使用base64,而我们使用zepto之后,src找不到资源,因为已经打包了,难道强行写base64. 1. 引入文件时语法很重要! import "Foot ...

  3. http学习总结及思考

    针对前面几章的学习,加上在学长的指导下,希望对前面知识进行简单总结. 1.在报文的7个方法中,最常用的是:Head和Post 响应头:If-Modified-Since HEAD -> 服务器返 ...

  4. [Android]apk反编译方法

    在学习Android开发的过程你,你往往会想去学习别人的apk是怎么开发的,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看.下面是我参考了一些 ...

  5. Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

    遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化c,seria ...

  6. asp.net 翻页时用ViewState保存上一页checkbox勾选的值

    /// <summary>        /// checkbox勾选取消勾选事件        /// </summary>        /// <param nam ...

  7. SpingCloud微服务架构学习(一)之服务提供者与服务消费者

    微服务构建的是分布式系统,各个微服务之间通过网络进行服务调用,这就有了服务提供者(被调用方)和服务消费者(调用方),以电影售票系统为例,假设服务调用关系如下图所示: 围绕此场景,我们先编写一个用户微服 ...

  8. Eclipse Action

    Interface IAction package org.eclipse.jface.action; import org.eclipse.core.commands.IHandlerAttribu ...

  9. 在 eclipse 中调出其内置的浏览器

    两种方法: 1.点击工具栏中的浏览器图标,就会在主面板中出现浏览器: 跳出一个blank页面,如下: 第二种方法:点击Window——Show view——Other 输入 "browser ...

  10. React 环境搭建及页面调试方法

    React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...