quartz初识娱乐之横扫全球 - 娱乐之横扫全球

quartz初识娱乐之横扫全球

2019年02月16日09时49分58秒 | 作者: 震博 | 标签: 作业,状况,触发器 | 浏览: 19732

}



别的,咱们也能够经过监听器来盯梢作业和触发器的作业状况


二.作业及其相关

1. Job

作业实际上是一个接口,任何一个作业都能够写成一个完结该接口的类,并完结其间的execute()办法,来完结详细的作业使命。

2. JobDetail

JobDetail能够指定咱们作业的详细信息,比方能够经过反射机制动态的加载某个作业的实例,能够指定某个作业在单个调度器内的作业组称号和详细的作业称号,能够指定详细的触发器。

一个作业实例能够对应多个触发器(也就是说校园每天10点放一次眼保健操录音,下午3点半能够再放一次),可是一个触发器只能对应一个作业实例(10点钟的时分校园不可能一起播映眼保健操和广播体操的录音)。

3. JobDataMap

这是一个给作业供给数据支撑的数据结构,运用办法和java.util.Map相同,十分便利。当一个作业被分配给调度器时,JobDataMap实例就随之生成。

Job有一个StatefulJob子接口,代表有状况的使命,该接口是一个没有办法的标签接口,其意图是让Quartz知道使命的类型,以便选用不同的履行计划。无状况使命在履行时具有自己的JobDataMap复制,对JobDataMap的更改不会影响下次的履行。而有状况使命同享同享同一个JobDataMap实例,每次使命履行对JobDataMap所做的更改会保存下来,后边的履行能够看到这个更改,也即每次履行使命后都会对后边的履行发生影响。

正因为这个原因,无状况的Job能够并发履行,而有状况的StatefulJob不能并发履行,这意味着假如前次的StatefulJob还没有履行结束,下一次的使命将堵塞等候,直到前次使命履行结束。有状况使命比无状况使命需求考虑更多的要素,程序往往具有更高的复杂度,因而除非必要,应该尽量运用无状况的Job。

假如Quartz运用了数据库耐久化使命调度信息,无状况的JobDataMap仅会在Scheduler注册使命时坚持一次,而有状况使命对应的JobDataMap在每次履行使命后都会进行保存。

JobDataMap实例也能够与一个触发器相关联。这种情况下,关于同一作业的不同触发器,咱们能够在JobDataMap中增加不同的数据,以便作业在不一起间履行时能够供给更为灵敏的数据支撑(校园上午放眼保健操录音第一版,下午放第二版)。

不管是有状况仍是无状况的使命,在使命履行期间对Trigger的JobDataMap所做的更改都不会进行耐久,也即不会对下次的履行产生影响。

三.触发器

Trigger是一个抽象类,它有三个子类:SimpleTrigger,CronTrigger和NthIncludedDayTrigger。前两个比较常用。

1。SimpleTrigger:这是一个十分简略的类,咱们能够界说作业的触发时刻,并选择性的设定重复距离和重复次数。

2。CronTrigger:这个触发器的功用比较强壮,并且十分灵敏,可是你需求把握有关Cron表达式的常识。假如你是一个Unix体系爱好者,你很可能现已具有这种常识,可是假如你不了解Cron表达式,请看下面的Cron详解:



Cron表达式由6或7个由空格分隔的时刻字段组成,如表1所示:

表1 Cron表达式时刻字段

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章