quartz    任务调度框架

简单的说:就是在特定的时间,干指定的事件,然后具体到某个对象去做

quartz初之体验:

  1.pom.xml文件(导入jar包)

<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
</dependencies>

  2. hello   创建一个任务调度

public static void main(String[] args) throws Exception {
//创建定时器对象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//开启定时器对象
scheduler.start();
System.out.println("1234");
//关闭定时器
scheduler.shutdown();
}

在上面的基础上进行添加触发器和工作对象

  创建一个类来实现job方法

public class HelloJob implements Job {
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("test01");
}
}

  使用触发器来调用工作对象

	public static void main(String[] args) throws Exception {
// 创建定时器对象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 定义一个工作对象
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("job1", "group1").build();
// 定义一个触发器
Trigger withSchedule = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1").startNow()
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1))
.build();
scheduler.scheduleJob(job, withSchedule);
// 开启定时器对象
scheduler.start();
// 关闭定时器
// scheduler.shutdown();
}

  

对象 TriggerBuilder 启动任务时间
  startNow 立即启动
  startAt (Date) 指定时间启动
对象 SimpleScheduleBuilder 进行简单任务重复执行
  repeatSecondly …() 多少秒后重复执行
  repeatminutely …() 多少分钟后重复执行
  repeatHourly …() 多少小时后重复执行

  使用上面的会产生对于时间的处理达不到理想的需求

public static void main(String[] args) throws Exception {
// 创建定时器对象
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 定义一个工作对象
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("job1", "group1").build();
// 定义一个触发器 每一秒都需要进行触发
Trigger withSchedule = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1").startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ?"))
.build();
scheduler.scheduleJob(job, withSchedule);
// 开启定时器对象
scheduler.start();
// 关闭定时器
// scheduler.shutdown();
}

  

 使用日历的模式进行处理 这样就会是的我们对于定时的时间可以实现我们的大部分的需求

那些字符代表什么意思呢  从位数上讲

1. Seconds 秒
2. Minutes 分钟
3. Hours 小时
4. Day-of-Month 月中的天
5. Month 月
6. Day-of-Week 周中的天
7. Year (optional field) 年(可选的域)

  其中使用通配符来进行设置(*,/,?,L,w,#)

通配符('*')
  可以被用来表示域中“每个”可能的值。因此在"Month"域中的*表示每个月,
而在 Day-Of-Week 域中的*则表示“周中的每一天”。
      '/'   字符

  表示值的增量,例如, 如果分钟域中放入'0/15',它表示“每隔 15 分钟,
  从 0 开始”,如果在份中域中使用'3/20',则表示“小时中每隔 20 分钟,从第 3 分钟开
  始”或者另外相同的形式就是'3,23,43'。

  '?'字符

  可以用在 day-of-month 及 day-of-week 域中,它用来表示“没有指定值”。
  这对于需要指定一个或者两个域的值而不需要对其他域进行设置来说相当有用

  'L'字符

  可以在 day-of-month 及 day-of-week 中使用,这个字符是"last"的简写,
  但是在两个域中的意义不同。例如,在 day-of-month 域中的"L"表示这个月的最后一天,
  即,一月的 31 日,非闰年的二月的 28 日。如果它用在 day-of-week 中,则表示"7"或
  者"SAT"。但是如果在 day-of-week 域中,这个字符跟在别的值后面,则表示"当月的最
  后的周 XXX"。例如:"6L" 或者 "FRIL"都表示本月的最后一个周五。当使用'L'选项时,
  最重要的是不要指定列表或者值范围,否则会导致混乱

  'W' 字符

  用来指定距离给定日最接近的周几(在 day-of-week 域中指定)。例如:
  如果你为 day-of-month 域指定为"15W",则表示“距离月中 15 号最近的周几”

  '#'字符

  表示表示月中的第几个周几。例如:day-of-week 域中的"6#3" 或者 "FRI#3"
  表示“月中第三个周五”。

quartz之hello(java)的更多相关文章

  1. 执行quartz报错java.lang.NoClassDefFoundError: javax/transaction/UserTransaction

    使用maven ,可以在 http://mvnrepository.com 中去查找 pom 配置如何写 <!-- https://mvnrepository.com/artifact/org. ...

  2. Quartz应用实践入门案例二(基于java工程)

    在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任 ...

  3. java Quartz定时器任务与Spring task定时的几种实现,

    java Quartz定时器任务与Spring task定时的几种实现 基于java 的定时任务实现, Quartz 时间详细配置    请查阅   http://www.cnblogs.com/si ...

  4. java定时任务以及Spring使用Quartz调度器执行定时任务

    java下的java.util.Timer中类可以实现定时执行任务的执行: 如:让任务立即执行,每隔1s循环执行一次 public class TimerClass { public static v ...

  5. Java Quartz用法

    code: 这里的MyJob必须是public,这里Job实例化的时候要用到反射,必须是public的,不能与调度操作放同一个.java文件中. package com.qhong; import o ...

  6. java作业调度框架Quartz

    在软件开发中,很多时候需要在特定时间的时间执行某些操作,比如每天的凌晨三点.每周的周日.每个月的15号,Apache Quartz就是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间 ...

  7. 基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度

    http://www.cnblogs.com/bobositlife/p/aspnet-mvc-csharp-quartz-net-timer-task-scheduler.html 在之前的文章&l ...

  8. Quartz任务调度基本使用

    转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html 上一篇:定时器的实现.Java定时器Timer和Quartz介绍 ...

  9. Quartz 在 Spring 中如何动态配置时间--转

    原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源 ...

随机推荐

  1. 移动端页面返回,数据不刷新bug解决

    一,当安卓和ios都有问题的时候 // a.html 设置刷新 检测缓存是否有标志 要是有就说明数据有变化 a.html跳转到b.html页面 window.addEventListener(&quo ...

  2. Jmeter常用脚本开发之JDBC请求

    简单说明:JDBC请求就是使用Jmeter连接数据库,执行sql语句,并返回对应的响应结果 步骤: 1.引入使用的数据库的驱动jar包,使用不同的数据库,我们需要引入不同的jar包.本文使用的MySQ ...

  3. C#—Dev XtraTabControl操作总结如动态增加Tab和关闭选项卡方法等

    1:显示行号 找到gridview属性 点击事件 CustomDrawRowIndicator private void gridView1_CustomDrawRowIndicator(object ...

  4. 8.Mysql数据类型选择

    8.选择合适的数据类型8.1 CHAR与VARCHAR CHAR固定长度的字符类型,char(n) 当输入长度不足n时将用空格补齐,char(n)占用n个字节,CHAR类型输出时会截断尾部的空格,即使 ...

  5. Java使用默认浏览器打开指定URL的方法(二种方法)

    直接看代码:方法一: 复制代码 代码如下: Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler http://ww ...

  6. 28335XINTF的简单使用

    28335 XINTF基本特点 一共有三个外部存储区域:区域0(Zone 0),区域6(Zone 6)和区域7(Zone 7).对应的 访问地址为:Zone 0:0x0000_4000-0x0000_ ...

  7. Win32消息循环机制等【转载】http://blog.csdn.net/u013777351/article/details/49522219

    Dos的过程驱动与Windows的事件驱动 在讲本程序的消息循环之前,我想先谈一下Dos与Windows驱动机制的区别: DOS程序主要使用顺序的,过程驱动的程序设计方法.顺序的,过程驱动的程序有一个 ...

  8. 继承 (js原型链)

    原型链是实现继承的主要方法.基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法. 1.构造函数.原型.实例的关系: 每个构造函数都有原型属性(Prototype),指向一个原型对象(函数创 ...

  9. BZOJ 3932 [CQOI2015]任务查询系统 - 差分 + 主席树

    Solution 差分就好了, 在$s_i$ 的点+1, $e_i + 1$ 的点 - 1. 查询的时候注意$l == r$ 要返回 $k * b[l]$ ,而不是$sum[node] $因为当前位置 ...

  10. BZOJ1855 股票交易 单调队列优化 DP

    描述 某位蒟佬要买股票, 他神奇地能够预测接下来 T 天的 每天的股票购买价格 ap, 股票出售价格 bp, 以及某日购买股票的上限 as,  某日出售股票上限 bs, 并且每次股票交 ♂ 易 ( 购 ...