其他分享
首页 > 其他分享> > 【调度任务----Quartz】Quartz的原理和需要注意的地方

【调度任务----Quartz】Quartz的原理和需要注意的地方

作者:互联网

基本介绍和核心接口

1.quartz是完全基于java的可用于进行定时任务调度的开源框架,使用的时候需要引入:

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>

2.核心接口包括:

注意:
传递给scheduler的是JobDetail而不是Job,JobDetail通过接收到的有关Job的信息,使用反射机制实例化Job,并且每次Job执行完之后,Job class的实例会被丢弃,Jvm的垃圾回收器会将他们回收,所以Job实例实现时,需要注意以下几点:

这些接口的关系图如下:

线程

在Quartz中,有两类线程,Shceduler调度线程任务执行线程前者包括普通任务调度Misfire任务调度(Misfire见这里后者需要一个线程池维护,调度图如下:

传递数据

尽管Job类不好定义静态变量,但是可以通过JobDataMap传递数据,JobDataMap是JobDetail的成员变量,可以借助JobDataMap为Job实例提供属性/配置,可以通过它来追踪Job的执行状态等等。对于第一种情况,可以在创建Job时,添加JobDataMap数据,在Job的execute()中获取数据(参见下面simpleTrigger的使用实例)第二种,则可以在Listener中通过获取JobDataMap中存储的状态数据追踪Job的执行状态。

标签:Quartz,实例,调度,接口,Job,JobDataMap,线程,原理,JobDetail
来源: https://blog.csdn.net/ningjiebing/article/details/89411083