quartz--job

  job是执行任务所需的Java类。

  在quartz中job分为两种,有状态和无状态的。job是无状态的,statefuljob是有状态的。

  通过实现job或者statefuljob接口就能定义一个自己的工作类。这两个接口都要求实现类实现execute方法

public void execute(JobExecutionContext context)
throws JobExecutionException;

  在job被Scheduler调用时,会传递一个JobExecutionContext给execute方法,它能访问job的信息。

  jobExecutionContext能获取到JobDetail对象,jobDerail对象保存了job的信息,job注册到JobDetail中,然后JobDetail注册进Scheduler中去。

    当要执行job是job才会被实例化,每次执行job都会实例化一个新的job对象,不必担心job的线程安全问题。 

  Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
  scheduler.start();   JobDetail jobDetail = new JobDetail("PrintJobDataMapJob",Scheduler.DEFAULT_GROUP,TestJob.class);//把job类--TestJob注册进JobDetail中   Trigger trigger = TriggerUtils.makeImmediateTrigger(0, 1000);   trigger.setName("PrintJobDataMapJobTrigger"); scheduler.scheduleJob(jobDetail,trigger);//把JobDetail注册进Scheduler中

  使用JobDetail对象的getJObDataMap()方法获取存储job要保存的自定义属性的map集合,JobDataMap实现了Map集合,具有Map的特性,JobDataMap中的数据可以在job类中进行传递和访问。

  实现job接口的job类是无状态的,要想job有状态,需要实现stateFulJob接口。


  StateFulJob是job的一个扩展接口,与job一样需要实现execute方法。

  job和stateFulJob的区别:

    多个有状态StateFulJob的JobDetail无法并发执行。或者两个trigger触发stateFulJob的条件是同时发生的,有一个trigger会被一直阻塞,直到另外的trigger处理完毕才会执行。

job的易失性、持久性和可恢复性  

  易失性:易失性的job在程序关闭后不会被持久化。可以通过JobDetail的setVolaility(true)来把job设置为易失性的。默认是false的。

  持久性:持久的job保存在jobstore中,当一个job是连续性的,没有trigger触发job,job还会保存在jobstore中,如果不是连续性的,就回被移除jobstore。通过JobDetail的setDurability(boolean)方法设置是否是连续性的,为true时不会被移除。

  可恢复性:在job还在执行是,Scheduler被意外关闭,在Scheduler重启之后job还可以恢复,在次重头开始执行。通过setRequestRecovery(boolean shuldRecovery)设置是否是可恢复的。默认是false不可恢复。

quartz_job的更多相关文章

  1. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  2. Quartz定时任务学习(二)web应用

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  3. quartz定时任务时间配置

    quartz定时任务时间设置描述(2011-03-03 16:23:50)转载▼标签: quartz时间it 分类: 凌乱小记  这些星号由左到右按顺序代表 :     *    *     *    ...

  4. quartz实现定时功能实例详解(servlet定时器配置方法)

    Quartz是一个完全由java编写的开源作业调度框架,下面提供一个小例子供大家参考,还有在servlet配置的方法 Quartz是一个完全由java编写的开源作业调度框架,具体的介绍可到http:/ ...

  5. Quartz定时任务详解一

    以下是我在应用的的一个基本配置: #---------调度器属性---------------- org.quartz.scheduler.instanceName = TestScheduler o ...

  6. .Net Core 2.0 的 ConsoleApp 搭建 Quartz(xml配置)windows服务

    零.创建一个.Net Core 2.0 的ConsoleApp 应用,建完就是这个样子了. 添加Log4Net 的引用,(不想看可以不看,个人习惯)Install-Package log4net添加C ...

  7. quartz简单应用

    pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 ...

  8. quartz 配置运行

    这篇文章是对quartz 2.2.1进行配置 分为spring 整合版本和QuartzInitializerServlet整合版本 首先是QuartzInitializerServlet整合版本 主要 ...

  9. Quartz定时任务学习(三)属性文件和jar

    以下是我在应用的的一个基本配置: #---------调度器属性----------------org.quartz.scheduler.instanceName = TestSchedulerorg ...

随机推荐

  1. 第五届山东ACM大赛汇总

    A.angry_birds_again_and_again 简单积分: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem& ...

  2. C#调用java类、jar包方法(转)

    一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理: 使用的命令:jar cvf test.jar -C com/ . 其中tes ...

  3. 【整理】动态加载Web Services

    WebClient client = new WebClient(); String url = "http://localhost/MESAPIWebService/MESAPI.asmx ...

  4. 诺基亚N900使用技巧

    一直都对 Linux 的掌上终端挺感冒的,最近从闲鱼上入后一台欧版的,开机进行评测和使用.以下经验仅供新手参考. 选择 N900 是有原因的,首先 N900 相对来说比较小巧(作为 MID,对比起手机 ...

  5. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  6. Android-----test----monkeyrunner

    1.下载  monkey_recorder.py和monkey_playback.py这两个文件: 2.存放到对应的虚拟机的tools文件夹下,如我的 D:\adt-bundle-windows-x8 ...

  7. Hibernate注解使用以及Spring整合

    Hibernate注解使用以及Spring整合 原文转自:http://wanqiufeng.blog.51cto.com/409430/484739 (1) 简介: 在过去几年里,Hibernate ...

  8. Hash函数及其应用

    本文部分内容摘自网络,参考资料链接会在文后给出,在此感谢原作者的分享. 计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数 ...

  9. 常用linux维护命令

    cat /etc/issue  查看linux版本信息

  10. JS中Array详细用法

    1.数组的创建 var name= new Array(); //创建一个数组 name[0]="zhangsan";   //给数组赋值 name[1]="lisi&q ...