1.初识Quartz
开发工具:STS
代码下载链接:https://github.com/theIndoorTrain/QuartzDemo.git
前言:
接触一个新事物的开始,我们都会产生一些疑问:
Quartz是什么?
Quartz是用来做什么的?
答:
Quartz是一个任务调度框架。说明白点,就是定制任务的。
例如:
每年你过生日时给你发一张生日贺卡;
每周一的6:00给你发一条起床提醒;
每月的15号给你发工资.......
明白了quartz的原理,我们就来进入我们的学习。
项目搭建
1.新建maven项目
2.导入quartz相关依赖
- <!-- 添加quartz依赖 -->
- <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
- <dependency>
- <groupId>org.quartz-scheduler</groupId>
- <artifactId>quartz</artifactId>
- <version>2.3.0</version>
- </dependency>
任务一:
每隔五秒打印一句“Hello world!”;
1.新建一个Job类实现Job接口:
实现:打印系统时间,输出“Hello world!”
- package com.xm.job;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- public class HelloJob implements Job{
- public void execute(JobExecutionContext context) throws JobExecutionException {
- Date date = new Date();
- SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
- System.out.println("Job start time: "+sf.format(date));
- System.out.println("Hello world!");
- }
- }
2.定义一个Scheduler类:
实现:
(1)定义一个JobDetail,绑定Job
(2)定义一个Trigger,定义任务细节
(3)定义一个Scheduler,绑定JobDetail和Trigger
- package com.xm.scheduler;
- import org.quartz.JobBuilder;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.SimpleScheduleBuilder;
- import org.quartz.Trigger;
- import org.quartz.TriggerBuilder;
- import org.quartz.impl.StdSchedulerFactory;
- import com.xm.job.HelloJob;
- public class HelloScheduler {
- public static void main(String[] args) throws SchedulerException {
- /**
- * 1.定义一个JobDetail
- *2.绑定 HelloJob
- *3.定义id,group
- */
- JobDetail jobDetail = JobBuilder
- .newJob(HelloJob.class)
- .withIdentity("job1", "group1")
- .build();
- /**
- * 1.定义一个trigger
- * 2.绑定group,name
- * 3.指定开始、结束时间
- * 4.定义任务细节
- */
- Trigger trigger = TriggerBuilder
- .newTrigger()
- //绑定group,name
- .withIdentity("trigger1", "group1")
- //从现在开始执行
- .startNow()
- //指定开始执行时间
- //.startAt()
- //指定结束执行时间
- //.endAt()
- .withSchedule(
- SimpleScheduleBuilder.simpleSchedule()
- //执行间隔时间
- .withIntervalInSeconds(5)
- //重复执行
- .repeatForever()
- )
- .build();
- /**
- * 1.定义一个SchedulerFactory工厂类
- * 2.获得一个Scheduler类
- * 3.启动Scheduler
- * 4.绑定JobDetail和Trigger
- */
- //定义一个SchedulerFactory工厂类
- SchedulerFactory factory = new StdSchedulerFactory() ;
- //获得一个Scheduler类
- Scheduler scheduler = factory.getScheduler();
- //启动Scheduler
- scheduler.start();
- //绑定JobDetail和Trigger
- scheduler.scheduleJob(jobDetail, trigger);
- }
- }
3.运行结果:
4.代码下载链接:https://github.com/theIndoorTrain/QuartzDemo/tree/f00db42b1eee7043179d129a6be79d6ad2a0c99f
任务二:
每隔五秒打印一句“Hello world!”,5s后开始,30秒后结束
1.修改Scheduler:
- package com.xm.scheduler;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.quartz.JobBuilder;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.SimpleScheduleBuilder;
- import org.quartz.Trigger;
- import org.quartz.TriggerBuilder;
- import org.quartz.impl.StdSchedulerFactory;
- import com.xm.job.HelloJob;
- public class HelloScheduler {
- public static void main(String[] args) throws SchedulerException {
- /**
- * 1.定义一个JobDetail
- *2.绑定 HelloJob
- *3.定义id,group
- */
- JobDetail jobDetail = JobBuilder
- .newJob(HelloJob.class)
- .withIdentity("job1", "group1")
- .build();
- /**
- * 1.获取系统时间
- * 2.定义开始时间
- * 3.定义结束时间
- */
- SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
- Date nowTime = new Date();
- System.out.println("Now Time:"+sf.format(nowTime));
- Date startTime = new Date(nowTime.getTime()+5000);
- System.out.println("Start Time:"+sf.format(startTime));
- Date endTime = new Date(nowTime.getTime()+30000);
- System.out.println("End Time:"+sf.format(endTime));
- /**
- * 1.定义一个trigger
- * 2.绑定group,name
- * 3.指定开始、结束时间
- * 4.定义任务细节
- */
- Trigger trigger = TriggerBuilder
- .newTrigger()
- //绑定group,name
- .withIdentity("trigger1", "group1")
- //从现在开始执行
- //.startNow()
- //指定开始执行时间
- .startAt(startTime)
- //指定结束执行时间
- .endAt(endTime)
- .withSchedule(
- SimpleScheduleBuilder.simpleSchedule()
- //执行间隔时间
- .withIntervalInSeconds(5)
- //重复执行
- .repeatForever()
- )
- .build();
- /**
- * 1.定义一个SchedulerFactory工厂类
- * 2.获得一个Scheduler类
- * 3.启动Scheduler
- * 4.绑定JobDetail和Trigger
- */
- //定义一个SchedulerFactory工厂类
- SchedulerFactory factory = new StdSchedulerFactory() ;
- //获得一个Scheduler类
- Scheduler scheduler = factory.getScheduler();
- //启动Scheduler
- scheduler.start();
- //绑定JobDetail和Trigger
- scheduler.scheduleJob(jobDetail, trigger);
- }
- }
2.运行结果:
3.代码下载链接:https://github.com/theIndoorTrain/QuartzDemo/tree/95b0d2fff333ea1bfb1ce45fef86a8ef3f985133
2018-07-14
1.初识Quartz的更多相关文章
- 初识Quartz之第一个Quartz实例
转: 初识Quartz之第一个Quartz实例 2018年04月09日 17:07:31 carson0408 阅读数:366 版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...
- 初识quartz 并分析 项目中spring整合quartz的配置【原创+转载】
初识quartz 并分析 项目中spring整合quartz的配置[原创+转载]2018年01月29日 12:08:07 守望dfdfdf 阅读数:114 标签: quartz 更多个人分类: 工具 ...
- 初识Quartz(入门案例)+常用的Cron表达式
1.Quartz架构图 1.实体层 package cn.happy.entity; //1. public class Plan { //时间 private String date; //任务 p ...
- 初识Quartz (一)
首先大概的了解一下Quartz. 一:首先进入官网去看看什么是quartz.http://www.quartz-scheduler.org/ Quartz是一个功能丰富的开源作业调度库,可以集成到几乎 ...
- 初识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 ...
- 初识Quartz(三)
本文将介绍CronTrigger的使用方法,CronTrigger相比 SimpleTrigger可以支持更复杂的作业计划.cron这一观念来自UNIX,在UNIX中,cron是一个运行于后台的守护程 ...
- 初识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 ...
- Quartz使用(1) - 初识quartz
1. 背景 由于最新的工作项目中,需要使用quartz框架,以完成相关的任务的定时执行.经过两周的调研与使用,本系列博客会参考官网及网上相关博客,结合工作项目中的使用,详细介绍quartz的各个方面. ...
- Quartz使用(2) - Quartz核心接口Scheduler、Job
quartz的核心接口如下: 接口 含义 Scheduler scheduler的主要API接口 Job 任务实现接口,期望调度器能够执行 JobDetail 用于定义Job实例 Trigger 调度 ...
随机推荐
- Mac 系统变量
vim .bash_profile ========================= MAVEN_HOME = < ... > export MAVEN_HOME =========== ...
- vue中遇到的坑
如何解决在vue中替换图片.一个使用base64,而我们使用zepto之后,src找不到资源,因为已经打包了,难道强行写base64. 1. 引入文件时语法很重要! import "Foot ...
- http学习总结及思考
针对前面几章的学习,加上在学长的指导下,希望对前面知识进行简单总结. 1.在报文的7个方法中,最常用的是:Head和Post 响应头:If-Modified-Since HEAD -> 服务器返 ...
- [Android]apk反编译方法
在学习Android开发的过程你,你往往会想去学习别人的apk是怎么开发的,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看.下面是我参考了一些 ...
- Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释
遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化c,seria ...
- asp.net 翻页时用ViewState保存上一页checkbox勾选的值
/// <summary> /// checkbox勾选取消勾选事件 /// </summary> /// <param nam ...
- SpingCloud微服务架构学习(一)之服务提供者与服务消费者
微服务构建的是分布式系统,各个微服务之间通过网络进行服务调用,这就有了服务提供者(被调用方)和服务消费者(调用方),以电影售票系统为例,假设服务调用关系如下图所示: 围绕此场景,我们先编写一个用户微服 ...
- Eclipse Action
Interface IAction package org.eclipse.jface.action; import org.eclipse.core.commands.IHandlerAttribu ...
- 在 eclipse 中调出其内置的浏览器
两种方法: 1.点击工具栏中的浏览器图标,就会在主面板中出现浏览器: 跳出一个blank页面,如下: 第二种方法:点击Window——Show view——Other 输入 "browser ...
- React 环境搭建及页面调试方法
React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...