-
2-3、浅谈JobExecutionContext:
一、JobExecutionContext是什么:
1、当Scheduler调用一个Job,就会将JobExecutionContext传递给Job的execute();
2、Job能通过JobExecutionContext对象访问到Quartz运行时的环境和Job本身的明细数据。
二、JobDataMap是什么:
1、在进行任务调度时JobDataMap存储在JobExecutionContext中非常方便获取。
2、JobDataMap可以用来装载任何可序列化的数据对象,当job实例对象被执行时这些参数对象会传递给它。
3、JobDataMap实现了JDK的Map接口,并且添加了一些非常方便的方法用来存储基本数据类型。
三、获取JobDataMap的两种方式:
1、从Map中直接获取;
2、在Job实现类中添加setter方法对应对应JobDataMap的键值(Quartz框架默认的JobFactory实现类在初始化job实例对象时会自动的调用这些setter方法);
查看全部 -
课程代码:https://gitee.com/xxg3053/quartz查看全部
-
calender用于排除查看全部
-
shutdown参数为true时,scheduler等所有任务执行完毕,阻塞关闭。shutdown参数为false时,scheduler不等待任务结束,立刻关闭,但不影响已存在任务的执行。任务的每个间隔均创建一个线程,standby时,线程依旧在产生,只是全部被阻塞。查看全部
-
Scheduler:通过工厂模式创建的,如图,SchedulerFactory的实现类有两个,常用的是StdSchedulerFactory。
Job和Trigger的关系:如图。
Scheduler的创建方式:如图。
接下来主要讲解StdSchedulerFactory,因为DirectSchedulerFactory的参数都需要代码去实现的(开发中提倡声明式配置,就是在配置文件中进行配置,例如xml中等)。
StdSchedulerFactory:使用一组参数(Java.util.Properties)来创建和初始化Quartz调度器,其中这组参数就包括了指定后台运行Quartz的线程数。还有Job的信息存储在何种介质中(例如内存中、或者数数据库中),配置参数一般存储在quartz.properties中。StdSchedulerFactory通过getScheduler犯法来创建和初始化调度器对象。
Scheduler的主要函数:
Date scheduleJob(JobDetail jobDetail,Trigger trigger):绑定JobDetail和Trigger,将其注入到Scheduler,其中返回的Date表示即将执行的最近一次的执行时间,如图。
void start():它是用来启动Scheduler调度器,指定定时任务的。
void standby():Scheduler暂时挂起,暂停工作。停止之后可以再通过start方法重新启动。
void shutdown():关闭调度器,不可以重新启动了。
注意:shutdown支持传入一个布尔类型的参数,如果传入的为true,就表示等待所有正在执行j的job执行完毕后,再进行关闭scheduler。如果传入的false,那么就和无参数一样,表示直接关闭scheduler。
举例:shutdown(true),如图。
查看全部 -
CronTrigger的作用:基于日历的触发器,而不是像SimpleTrigger精确到指定间隔时间,它比SimpleTrigger更常用(例如:每月的1号执行定时任务,这是SimpleTrigger实现不了的)。
Cron表达式:CronTrigger是基于Cron表达式实现的,如图。
举例:通过CronTrigger实现每秒钟实现一次定时任务。
Cron表达式:使用规则如下图(","表示或的意思,"-"表示至的意思,"*”表示所有的意思,"/"表示每的意思,"?"表示任意的意思,“#”表示第的意思。
Cron表达式举例:如图。
注意:
日和周不能是同一个值(不能同时是*或者?)
月和周的英文不区分大小写,
周X是(X+1),周日是1作业:
查看全部 -
Job接口:实现业务逻辑的任务接口,实现该接口需要实现execute方法,该方法类似于TimerTask的run方法。JobExecutionContext参数是Job执行的上下文,其中在该参数中有一个JobDataMap,它包含了输入的参数。
注意:execute方法声明抛出了一个异常,如果任务执行失败,我们可以通过捕获该异常来处理。避免了Timer的全崩式失败。
Job在Quartz的生命周期:每次Scheduler执行Job时,它在调用execute方法前会根据JobDetail提供的类型创建一个Job实例。当该任务执行完毕后,会丢弃该Job实例,并且释放的实例会被垃圾回收机制回收。
JobDetail接口:JobDetail为Job实例提供了许多设置属性,以及JobDataMap成员变量属性,它用来存储特定Job实例的状态信息,Scheduler需要借助JobDetail对象来添加Job实例。
Job的重要属性:
name:任务的名称,它在JobDetail中是必须项。
group:任务所在组,默认值是大写的DEFAULT,它也是必须项。
jobClass:JobDetail传入任务的类类型,它也是必须项。
jobDataMap:它用来传参的作用。
使用场景:例如,输出日志,输出执行的任务所在路径就可以通过getClass()。
查看全部 -
AnotherBean类
查看全部 -
Tomcat 乱码处理!
查看全部 -
Trigger触发器通用属性: 1.JobKey:表示Job实例的标识,触发器被触发时,该指定的job实例会执行。 2.StartTime:表示触发器的时间表首次被触发的时间。它的值的类型是Java.util.Date. 3.endTime:指定触发器的不再被触发的时间。它的值的类型是Java.util.Date查看全部
-
jobkey,starttime (startAt) endtime(endAt)查看全部
-
凄凄切切查看全部
-
start(); 开启
standby(); 挂起,可以使用start()再次开启
shutdown(); 完全关闭scheduler,不可以被start()所开启
查看全部 -
调度器:Scheduler
任务:Job和JobDetail
触发器:Trigger
查看全部 -
通配符说明
查看全部
举报