链式编码?
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()。
Job的定义:实现业务逻辑的任务接口。
浅谈Job:Job接口非常容易实现,只有一个execute方法,类似TimerTask的run方法,在里面编写业务逻辑。
package org.quartz;
public interface Job{
public void execute(JobExecutionContext context)throws
JobExecutionException;
}
Job实例在Quartz中的生命周期
每次调度器执行job时,它在调用execute方法钱会创建一个新的job实例。
当调用完成后,关联的job对象实例会被释放,释放的实例会被垃圾回收机制回收。
浅谈JobDetail
JobDetail为Job实例提供了许多设置属性,以及JobDataMap成员变量属性,它用来存储特定Job实例的状态信息,调度器需要借助JobDetail对象来添加Job实例。
JOBdetail对象负责添加Job实例
JOB的生命周期
四个重要的参数
Job定义:实现业务逻辑的任务接口
JobExecutionContext:执行的上下文
jobDataMap:用来传参的作用
JobDetail重要属性:
name:名字
group:所属组
jobClass:绑定Job
jobDataMap:传参
jobdetail
2-2、浅谈Job&JobDetail
一、Job实例在Quartz中的生命周期
每次调度器执行job时,它在调用execute方法前会创建一个新的job实例
当调用完成后,关联的job对象实例会被释放,释放的实例会被垃圾回收机制回收。
二、浅谈JobDetail
JobDetail为Job实例提供了许多属性,以及JobDataMap成员变量属性,它用来存储特定Job实例的状态信息,调度器所需要借助JobDetail对象来添加的Job实例(用来绑定Job的,并且保存一些Job没有携带的但有需要的信息)
重要属性:
name:任务的名称(必须的);
group:任务所在的组(必须的)默认值:DEFAULT;
jobClass:任务的实现类(必须的);
jobDataMap:用来做一些传参的作用;
JobDetail为Job实例提供了很多设置属性,以及JobDataMap成员变量属性,其用来存储特定Job实例的状态信息。
JobDetail重要属性
Job实例的生命周期
Job接口
JobDetail浅谈
Job实例在Quartz中的生命周期
jobDetail
可以通过 jobDetail 的 getKey() 方法来获取相关信息
jobDetail.getKey().getName(); // 获取名称 jobDetail.getKey().getGroup(); // 获取组名称 jobDetail.getJobClass.getName() // 获取Job class 的名称
group 默认 DEFAULT
重要属性
Job&JobDetail的区别
获取jobDetail实例的名字: jobDetail.getKey().getName();
获取jobDetail实例的组(如果不指定组的话,默认为DEFAULT组): jobDetail.getKey().getGroup();
获取jobDetail实例绑定的jobClass : jobDetail.getJobClass.getName();