quartz是一个作业调度框架,用于指定工作(作业)在指定时间执行——定时工作。

quartz的核心接口有:

  Scheduler接口:Scheduler是job的执行对象,用于工作的执行。

  Job接口:用于指定作业的类,自己写的“定时程序”需要实现此接口的void execute(JobExecutionContext arg0)方法。

  Trigger抽象类:指定工作在什么时候执行。调度类(Scheduler)在指定时间调用此类,再由trigger类调用指定的定时程序。    

  JobDetail类:持有某个定时工作的详细描述,包括Name,Group,JobDataMap等。
  JobExecutionContext类:定时程序执行的run-time的上下文环境,用于得到当前执行的Job的名字,配置的参数等。
  JobDataMap类:用于描述一个作业的参数,参数可以为任何基本类型例,也可为某个对象的引用.
  JobListener,TriggerListener接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。
  JobStore类:在哪里执行定进程序,可选的有在内存中,在数据库中。

Scheduler接口:

  通过StdSchedulerFactory或DirectSchedulerFactory的getDefaultScheduler获取Schedule对象。

    1、DirectSchedulerFactory是能对Scheduler绝对控制的。

DirectSchedulerFactory factory=DirectSchedulerFactory.getInstance();//获取DirectSchedulerFactory对象

factory.createVolatileScheduler(10);//通过调用createXXXX方法初始化Scheduler对象,但是该方法不返回Scheduler对象,createXXXX方法 用于设置Scheduler的属性

Scheduler scheduler = factory.getScheduler();//获取Scheduler对象,如果不调用createXXXX方法会抛出SchedulerException异常

    2、STDSchedulerFactory类产生Scheduler实例。

      stdSchedulerFactory有三种方式向StdScheduler提供属性以供Scheduler使用:通过 java.util.Properties 实例提供、通过外部属性文件提供、通过含有

      属性文件内容的 java.io.InputStream 实例提供

        1、通过java.util.properties提供      

StdSchedulerFactory factory = new StdSchedulerFactory();
Properties props = new Properties();
props.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, "org.quartz.simpl.SimpleThreadPool");//实现org.quartz.spi.ThreadPool的类名
props.put("org.quartz.threadPool.threadCount", "10"); //线程数量
factory.initialize(props); //初始化
Scheduler scheduler = factory.getScheduler();

       可以通过public void initialize(String filename) throws SchedulerException方法来加载初始化Scheduler的属性

      2、通过public void initialize(InputStream propertiesStream) throws SchedulerException方法读取流的形式加载属性

      如果没有为initialize方法指定加载文件或流,那么StdSchedulerFactory会默认的从quartz.properties文件去加载

        3、可以用StdSchedulerFactory.getDefaultScheduler()方法来创建一个Scheduler实例

  Scheduler通过调用start方法启动工作的执行。

  Scheduler通过scheduleJob(JobDetail,Trigger)方法向Scheduler注册工作,JobDetail持有执行job的信息,trigger指的是什么时候触发工作。

job接口:

  job是执行工作的Java类,要想指定自己的工作,必须实现job接口,在方法execute(JobExecutionContext arg0)中进行工作操作。

JobDetail类:

  jobDerail持有job的相关信息,通过构造器进行实例:public JobDetail(String name, String group, Class jobClass),通过向其中传递工作名、工作组、工作类的class实例jobdetail对象。

Trigger接口:

  trigger接口的实现类 org.quartz.SimpleTrigger 、org.quartz.CronTrigger 和 org.quartz.NthIncludedDayTrigger

  SimpleTrigger主要是针对一些相对简单的时间触发进行配置使用,比如在指定的时间开始然后在一定的时间间隔之内重复执行一个Job

  CronTrigger可以配置更复杂的触发时刻表,比SimpleTrigger功能上跟加强大,主要在能配置跟加复杂的执行计划的时间

  NthIncludedDayTrigger

 一个trigger只能对应一个job,一个job能对应多个trigger。trigger是job的触发器,指定在什么情况下执行定时计划。

JobDataMap类:

  jobDataMap类就像它的名字说的那样,用于存储job的数据,以map的形式进行存储。jobDataMap可以向job对象传递任何数据类型的信息

JobStore接口:

  JobStore的实现类,RAMJobStore和JDBCJobStore

  RAMJobStore中对job操作的方法有:

    public void storeJob(SchedulingContext ctxt, JobDetail newJob,boolean replaceExisting),用于job存储进内存中去

    public boolean removeJob(SchedulingContext ctxt, String jobName,String groupName);移除job

    public JobDetail retrieveJob(SchedulingContext ctxt, String jobName,String groupName);获取job的jobDerail,

  对trigger的操作类似。

  

quartz学习的更多相关文章

  1. Quartz学习——Spring和Quartz集成详解(三)

    Spring是一个很优秀的框架,它无缝的集成了Quartz,简单方便的让企业级应用更好的使用Quartz进行任务的调度.下面就对Spring集成Quartz进行简单的介绍和示例讲解!和上一节 Quar ...

  2. Quartz学习-- quartz基本介绍和 Cron表达式

    Quartz学习 一. Quartz 大致简介 Quartz 是完全由 java 开发的一个开源的任务日程管理系统 ​任务日程管理系统 换句话说就是: ​ 一个预先确定的日程时间到达时,负责执行任务的 ...

  3. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

  4. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)

    通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...

  5. Java任务调度开源框架quartz学习

    一.quartz学习 Java框架介绍:Quartz从入门到进阶 http://edu.yesky.com/edupxpt/233/2209233.shtml 1.例子:http://javacraz ...

  6. Quartz学习笔记:集群部署&高可用

    Quartz学习笔记:集群部署&高可用 集群部署 一个Quartz集群中的每个节点是一个独立的Quartz应用,它又管理着其他的节点.这就意味着你必须对每个节点分别启动或停止.Quartz集群 ...

  7. Quartz学习笔记:基础知识

    Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Tim ...

  8. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  9. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的坏习惯. 通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车 ...

  10. (转) Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    http://blog.csdn.net/u010648555/article/details/60767633 当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的 ...

随机推荐

  1. spring 和 spring mvc

    spring3 http://jinnianshilongnian.iteye.com/blog/1482071 spring mvc http://jinnianshilongnian.iteye. ...

  2. oracle免客户端安装 plsql连接

    开发的过程中,往往没有必要在自己的电脑上安装oracle,也实在太大了. 这里介绍一种使用plsql连接oracle的方法,类似于navicat之连接mysql. 先下载plsql,进行安装,这里提供 ...

  3. 【leetcode】 Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  4. leetcode6:Zigzag Conversion@Python

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  5. MySQL之账户管理

    MySQL之账户管理 账户管理是MySQL用户管理最基本的内容.包括登录,退出MySQL服务器.创建用户.删除用户.密码管理和权限管理等内容. 其中登录方式非常简单,在这个地址有:http://www ...

  6. delpin常用函数

    if  r>570 then                  SET_TT(1);//超出多少行就用excel导出 类似数组用法:var        ts: TStringlist;begi ...

  7. php工作笔记6-手机端适应缩放

    1.静态页面

  8. [转载]Average Manager vs. Great Manager Explained in 10 sketches

    Assigning Tasks     Delivering News     Conducting 1:1s     Giving Feedback     Dealing with Turbule ...

  9. jQuery div内容间隔1秒动态向上滚动HTML、JS代码

    demo1: <!DOCTYPE html> <html> <head> <title>div内容间隔1秒动态滚动</title> < ...

  10. [MAC]用beamoff给VMware的Mac OS X 10.10.x加速

    MAC OS X 10.10.x Yosemite在VMWare中实在是太慢了,卡出翔!好在高人多,请装beamoff!详见:https://github.com/JasF/beamoff.git C ...