zoukankan      html  css  js  c++  java
  • quartz_job

    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不可恢复。

  • 相关阅读:
    JVM学习笔记(三)------内存管理和垃圾回收【转】
    JVM学习笔记(二)------Java代码编译和执行的整个过程【转】
    JVM学习笔记(一)------基本结构【转】
    Java程序编译和运行的过程【转】
    linux C判断文件是否存在【转】
    Java编译那些事儿【转】
    CTSC1999补丁VS错误题解
    ASP.NET MVC学前篇之Ninject的初步了解
    setSingleChoiceItems和setPositiveButton两者触发时期
    B. Sereja and Mirroring
  • 原文地址:https://www.cnblogs.com/diandiandidi/p/5572776.html
Copyright © 2011-2022 走看看