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. 同一台主机部署两个比特币钱包以及rpc服务的摘要

    .bitcoin QA Test环境 启动指定参数: "C:\Program Files (x86)\Bitcoin\bitcoin-qt.exe" -testnet -serve ...

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

    1.没有FTP站点的,可以自己搭建一个FTP站点供测试使用,搭建步骤: l  安装IIS组件,控制面板—>程序和功能—>启用或关闭windows功能,勾选FTP服务器.IIS管理控制台,点 ...

  3. andorid 表格布局

    tablelayout.xml表格布局 <?xml version="1.0" encoding="utf-8"?> <TableLayout ...

  4. make V=1 查看完整的gcc编译信息

    Linux内核make命令选项 2012年5月28日lenky发表评论阅读评论6,289 次浏览   升级Linux内核的操作已经变得很简单,基本的几个命令即可搞定:make menuconfig.m ...

  5. Contest with Drinks Easy

    /* Problem Statement Joisino is about to compete in the final round of a certain programming competi ...

  6. How to Solve Lonsdor K518ISE Abnormal Display by Factory Resetting

    Here’s the working solution to Lonsdor K518ISE Key Programmer abnormal display after upgrade. Proble ...

  7. 重启ngix失败

    问题如下: 解决办法:杀死nginx进程,再重启 .查找nginx主进程:ps -ef|grep nginx .杀死进程:kill - .启动:cd /usr/sbin./nginx -t

  8. HTML的基本知识点

    <!DOCTYPE HTML> <html> <body> <video width="320" height="240&quo ...

  9. 高级设计总监的设计方法论——5W1H需求分析法 KANO模型分析法

    本期开始进入设计方法论的学习,大湿自己也是边学边分享,算是巩固一遍吧: 另外这些理论基本都是交叉结合来应用于工作中,我们学习理论但不要拘泥于理论的框架中,掌握后要灵活运用一点- 这些理论一部分来自于我 ...

  10. IOS初级:NSTimer

    @property (nonatomic, strong) NSTimer *timer; 添加定时器 self.timer = [NSTimer scheduledTimerWithTimeInte ...