Quartz -第一篇-入门
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
创建一个实例实现Job接口,实现其中的execute方法,将你要做的任务放到此方法
package quartz.job; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import javax.xml.crypto.Data;
import java.text.SimpleDateFormat;
import java.util.Date; /**
* ClassName: HelloJob<br/>
* Description: <br/>
* date: 2019/1/22 11:19 AM<br/>
*
* @author chengluchao
* @since JDK 1.8
*/ public class HelloJob implements Job { @Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Exec Time Is:" + simpleDateFormat.format(date));
System.out.println("Hello word!");
}
}
编写调用类
package quartz.job; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; /**
* ClassName: HelloScheduler<br/>
* Description: <br/>
* date: 2019/1/22 11:23 AM<br/>
*
* @author chengluchao
* @since JDK 1.8
*/ public class HelloScheduler {
public static void main(String[] args) throws Exception {
//创建一个JobDetail实例,将HelloJob.class绑定
JobDetail jobDetail = JobBuilder
.newJob(HelloJob.class)
.withIdentity("myJob", "group1")
.build();
//创建一个Trigger实例,定义该job立即执行,并且每隔两秒钟重复执行一次,直到永远
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()//立即执行
.withSchedule(
SimpleScheduleBuilder
.simpleSchedule()
.withIntervalInSeconds(2)//两秒一次
.repeatForever())//直到永远
.build();
//创建Schduler实例
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}
14:56:17.296 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'group1.myJob', class="quartz".job.HelloJob
14:56:17.296 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
14:56:17.296 [DefaultQuartzScheduler_Worker-10] DEBUG org.quartz.core.JobRunShell - Calling execute on job group1.myJob
Current Exec Time Is:2019-01-22 14:56:17
Hello word!
14:56:19.295 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'group1.myJob', class="quartz".job.HelloJob
14:56:19.295 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
14:56:19.295 [DefaultQuartzScheduler_Worker-1] DEBUG org.quartz.core.JobRunShell - Calling execute on job group1.myJob
Current Exec Time Is:2019-01-22 14:56:19
Hello word!
14:56:21.296 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.simpl.PropertySettingJobFactory - Producing instance of Job 'group1.myJob', class="quartz".job.HelloJob
14:56:21.296 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers
14:56:21.296 [DefaultQuartzScheduler_Worker-2] DEBUG org.quartz.core.JobRunShell - Calling execute on job group1.myJob
Current Exec Time Is:2019-01-22 14:56:21
Hello word!
补充:
System.out.println("jobDetail's name : " + jobDetail.getKey().getName());
System.out.println("jobDetail's gruop : " + jobDetail.getKey().getGroup());
System.out.println("jobDetail's jobClass : " + jobDetail.getKey().getClass());
jobDataMap的使用:
public class HelloScheduler {
public static void main(String[] args) throws Exception {
//创建一个JobDetail实例,将HelloJob.class绑定
JobDetail jobDetail = JobBuilder
.newJob(HelloJob.class)
.withIdentity("myJob")
.usingJobData("message","hello myJob1")
.usingJobData("floatJobvalue",3.14f)
.build();
//创建一个Trigger实例,定义该job立即执行,并且每隔两秒钟重复执行一次,直到永远
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("myTrigger", "group1")
.usingJobData("message","hello myTrigger1")
.usingJobData("doubleJobvalue",885.02)
.startNow()//立即执行
.withSchedule(
SimpleScheduleBuilder
.simpleSchedule()
.withIntervalInSeconds(2)//两秒一次
.repeatForever())//直到永远
.build();
//创建Schduler实例
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}
public class HelloJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Current Exec Time Is:" + simpleDateFormat.format(date));
System.out.println("Hello word!");
JobKey key = jobExecutionContext.getJobDetail().getKey();
System.out.println("JobDetailKey : " + key.getName() + "JobDetailValue : " + key.getGroup());
TriggerKey triggerKey1 = jobExecutionContext.getTrigger().getKey();
System.out.println("triggerKey1 : " + triggerKey1.getName() + "triggervalue1 : " + triggerKey1.getGroup());
JobDataMap dataMap = jobExecutionContext.getJobDetail().getJobDataMap();
JobDataMap tdataMap = jobExecutionContext.getTrigger().getJobDataMap();
System.out.println(dataMap.get("message"));
System.out.println(tdataMap.get("message"));
JobDataMap dataMap2 = jobExecutionContext.getMergedJobDataMap();
//Trigger会覆盖JobDetail的信息
System.out.println(dataMap2.get("message"));
System.out.println(dataMap2.get("message"));
}
获取jobDataMap的值的方式2:
在HelloJob类中定义属性,属性名和map中的key一样,加上get/set方法
在HelloJob的类中就可以直接使用
Trigger的方法:
.startAt(date)//首次执行的时间
.endAt(endDate)//最后一次执行的时间
.startNow()//立即执行
Quartz -第一篇-入门的更多相关文章
- 第一篇 入门必备 (Android学习笔记)
第一篇 入门必备 第1章 初识Android 第2章 搭建你的开发环境 第3章 创建第一个程序--HelloWorld 第4章 使用Android工具 ●Android之父 Android安迪·罗 ...
- 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳
学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 ...
- svn第一篇----入门指南
摘要:trunk存放的是主代码,不修改,branch,tag,milestone均是从trunk中衍生的.branch复制trunk中代码用于开发,tag用于存放比较重要的发行版,存放release版 ...
- curl讲解第一篇---入门和基本使用
概念 它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP. curl同样支持HTTPS认证,HTTP POST方法, ...
- elasticsearch 第一篇(入门篇)
介绍 elasticsearch是一个高效的.可扩展的全文搜索引擎 基本概念 Near Realtime(NRT): es是一个接近实时查询平台,意味从存储一条数据到可以索引到数据时差很小,通常在1s ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【OpenCV入门指南】第一篇 安装OpenCV
http://blog.csdn.net/morewindows/article/details/8225783/ win10下vs2015配置Opencv3.1.0过程详解(转) http://ww ...
- .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第一章 入门篇-开篇及总体规划
.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来 ...
随机推荐
- 【区间更新区间求和】HDU 1698 Just a Hook
acm.hdu.edu.cn/showproblem.php?pid=1698 [AC] #include<cstdio> ; #define lson (i<<1) #def ...
- hdu 4819 Mosaic 树套树 模板
The God of sheep decides to pixelate some pictures (i.e., change them into pictures with mosaic). He ...
- Java线程池快速学习教程
1. Java线程池 线程池:顾名思义,用一个池子装载多个线程,使用池子去管理多个线程. 问题来源:应用大量通过new Thread()方法创建执行时间短的线程,较大的消耗系统资源并且系统的响应速度变 ...
- 蒲公英(bzoj 2724)
Description Input 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 Output Sample Input ...
- Query on The Trees(hdu 4010)
题意: 给出一颗树,有4种操作: 1.如果x和y不在同一棵树上则在xy连边 2.如果x和y在同一棵树上并且x!=y则把x换为树根并把y和y的父亲分离 3.如果x和y在同一棵树上则x到y的路径上所有的点 ...
- 济南学习 Day 5 T3 am
[题目描述] 众所不知,rly现在不会玩国际象棋.但是,作为一个OIer,rly当然做过八皇后问题.在这里再啰嗦几句,皇后可以攻击到同行同列同对角线,在 n*n的棋盘中,摆放n个皇后使它们互相不能攻击 ...
- poj 3311 状压dp 最短路
C - Hie with the Pie Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64 ...
- R语言入门视频笔记--3-1--矩阵与数组
生成一个新矩阵,多用一些参数吧这次: x <- c(12,13,14,15) rname <- c("R1","R2") nname <- c ...
- Laravel 控制器的request
public function request1(Request $request){ //取值 $name = Request::input('name'); //是否有值 if($request- ...
- css3 nth-child 与 nth-of-type 的区别
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1709 一.深呼吸,直 ...