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. js 处理 html 标签转义 处理json中含有的ascii 编码

    function escape2Html(str) { var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&am ...

  2. 现代工程仿真CAE技术介绍

    随着现代科学技术的发展,人们正在不断建造更为快速的交通工具.更大规模的建筑物.更大跨度的桥梁.更大功率的发电机组和更为精密的机械设备.这一切都要求工程师在设计阶段就能精确地预测出产品和工程的技术性能, ...

  3. 记录Castle ActiveRecord访问Sqlite的配置

    1.ActiveRecord配置文件ARConfig.xml,并将配置文件的“生成操作”改成“嵌入的资源” <?xml version=; i < ; i++)             { ...

  4. GPUImage实现摄像头暂停

    GPUImage相信很多开发者都用过,其本身也是十分简单易用,因此对于GPUImage的基本用法不再赘述. 最近在使用GPUImage时要实现摄像时暂停和继续的功能,但GPUImage本身并没有提供相 ...

  5. Mongodb故障转移

    测试环境 四台测试服务器10.151.151.150:27017(主节点),10.151.151.151:27017(从节点),10.151.151.152:27018(从节点),10.151.151 ...

  6. openStack windows时间偏移

    openstack

  7. java 获取当月第一天和最后一天 获取前一个月第一天和最后一天

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");                    //获取前月的第一 ...

  8. Web 开发人员系统重装备忘录

    准备工作: 一.配置IIS 软件安装: 一.大块头: 1.VS2005 1.VS2005SP1 2.VSS 2005 2.VS2008 1.VS2008TeamExplorer 2.VS2008SP1 ...

  9. Eclipses使用小技巧

    1.新导入Eclipse的项目,显示很多错误,一般是因为没有加上对应的Lib,添加后错误消失. 2.如果还有错误,而且是与JavaEE相关的,比如说HttpServlet类找不到,更新一下tomcat ...

  10. WeedFS依赖库 0.6.1

    WeedFS依赖库 版本 0.6.1 =======================================================================glog====== ...