开发工具: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. TCP/IP协议<二>

    一.TCP/IP的标准化 1.TCP/IP的含义 一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称. 具体点,IP或ICMP.TCP或UDP.TELENT或FTP.以及HTTP等都属 ...

  2. Oracle PL/SQL 实现excel PMT函数、PPMT函数

    PMT函数 1.每月本息金额  = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1) ,in_financeAmount in number) return number ...

  3. (转)python学习链接

    原文:http://www.cnblogs.com/spykids/category/782491.html http://www.cnblogs.com/alex3714/category/7707 ...

  4. If you are tired...

    如果你累了 1. 深呼吸 放松身体,深呼吸五分钟. 2. 听音乐 静静地听几首歌放松一下就好了,比如王豪学长推荐的追梦赤子心,骄傲的少年. 3. 冥想 放松身体,处于冥想状态. 4. 干洗脸.鸣天鼓. ...

  5. jQuery学习心得

    表示在document.ready时执行代码 $(function(){ //1.取得要操作的对象(尽量只限制范围),如果对象多次使用要记得缓存 var $selector = $('selector ...

  6. HDU 2255 ——奔小康赚大钱——————【KM算法裸题】

    奔小康赚大钱 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  7. Java反射破坏单例模式

    今天电话面试的时候问到了,Google了一下 原出处: http://blog.csdn.net/lws332969674/article/details/8125893 一. Java中的反射技术可 ...

  8. AngularJS 指令解析(二)

    AngularJS 指令解析(二) 第一篇我们讲过了作用域(scope)这块内容,现在我们进入正题,讲AngularJS的指令. 什么是指令? 这里我们引用官方的一句话: Custom directi ...

  9. Dynamics CRM 4.0升级Dynamics CRM 2013后全局Ribbon的修改

    最近在为一个客户在Dynamics CRM 4.0到Dynamics CRM 2013的升级,升级之后发现原来在Dynamics CRM 4.0中定义的全局Ribbon按钮像牛皮癣一样,在每个实体页面 ...

  10. selenium代理

    selenium.KeyDown("id=ctaskName", "d");            selenium.KeyPress("id=cta ...