开发工具:Eclipse

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

前言:

1.初始Quartz里面,我们介绍了quartz的一种简单使用,就是精确的时间去控制任务的调度,

例如,多久后执行任务,多久后结束之类的。

这种模式并不能体现Quartz的强大,

比如,我想实现:

在每周一早上8:00给女朋友发条问候信息、在她的生日那天0:00发一条祝福短信......

quartz可以帮我们做到这些。

cron表达式:

quartz实现了对cron表达式的支持,那么整个任务调度就可以基于日历、日期去操作执行,而不是简单的用时间刻度去控制。

这样,会更加灵活。

这里将不再讲解cron表达式,有兴趣的可以来到这里学习Cron表达式:

3.初始Cron表达式


任务一:

每天10:43:30执行一次:

1.定义CronHelloScheduler:

Cron表达式:"30 43 10 * * ?"

 package com.xm.scheduler;

 import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
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 CronHelloScheduler { 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.定义一个CronTrigger
* 2.绑定group,name
* 3.定义cron表达式规则
*/
CronTrigger trigger = (CronTrigger)TriggerBuilder
.newTrigger()
.withIdentity("trigger2", "group1")
.withSchedule(
CronScheduleBuilder
//定义cron表达式规则
.cronSchedule("30 43 10 * * ?")
)
.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/5ab064d06f7a0de92de21c84b660366d39cbb859


任务二:

每个周六的上午10:50---10:52每隔11s执行一次

1.修改cron表达式:

Cron表达式:"0/11 50-52 10 ? * 7"

 package com.xm.scheduler;

 import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
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 CronHelloScheduler { 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.定义一个CronTrigger
* 2.绑定group,name
* 3.定义cron表达式规则
*/
CronTrigger trigger = (CronTrigger)TriggerBuilder
.newTrigger()
.withIdentity("trigger2", "group1")
.withSchedule(
CronScheduleBuilder
//定义cron表达式规则
.cronSchedule("0/11 50-52 10 ? * 7")
)
.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/a1c93071a16488383ff3332d042dcf537f05c972


2018-07-14

2.初识CronTrigger的更多相关文章

  1. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  2. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  3. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  4. 初识IOS,Label控件的应用。

    初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...

  5. UI篇(初识君面)

    我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. 初识SpringMvc

    初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...

  8. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  9. Redis初识、设计思想与一些学习资源推荐

    一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...

随机推荐

  1. sql查询约束

    写作业的时候发现书上竟然找不到查询约束的语句,百度搜了好久的资料,终于查询成功,在这里记录下来 主键约束 SELECT   tab.name AS [表名],   idx.name AS [主键名称] ...

  2. C# IO流 File.Exists,Directory.Exists, File.Create,Directory.CreateDirectory

    void Start() { CreateDirectory(); CreateFile(); } //平台的路径(封装起来的一个属性,这不是一个方法) public string path { ge ...

  3. jquery中beforeSend和complete的使用 --- 提高用户体验&&设置请求头

    beforeSend方法的用户主要有下面几个: 第一:用于在发送ajax请求之前设置请求头 即作为前端,如果我们希望在发送数据之前设置请求头,就可以像下面这么做: beforeSend: functi ...

  4. HDU5366——The mook jong——dp

    The mook jong Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  5. Myeclipse修改jdk版本流程

    Myeclipse修改jdk版本流程 很多时候,项目没有用对jdk版本时候,项目报错,在MyEclipse中,要修改JDK版本 有三处地方需要注意:!! 1.第一处 2.第二处 3.第三处

  6. Discuz论坛UCenter无法登录问题修复方法完美解决无限刷新问题

    级20141225版本后,出现UC无法登录问题[完美]解决方法.自圣诞节发布 Discuz! X3.2 R20141225  小编手头多个站点也都在升级后出现了,后台登录[ UCenter]假死情况, ...

  7. js数组Array方法

    1. indexOf indexOf()方法返回在该数组中第一个找到的元素位置,如果它不存在则返回-1. var fruits = ["Banana", "Orange& ...

  8. System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

    System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.解决办法是: 而这位大哥提出的解决办法 ...

  9. ansible使用8-Best Practices

    Content Organization production # inventory file for production servers stage # inventory file for s ...

  10. 【转载】SQL执行计划

    要理解执行计划,怎么也得先理解,那各种各样的名词吧.鉴于自己还不是很了解.本文打算作为只写懂的,不懂的懂了才写. 在开头要先说明,第一次看执行计划要注意,SQL Server的执行计划是从右向左看的. ...