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不可恢复。
quartz_job的更多相关文章
- Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- Quartz定时任务学习(二)web应用
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- quartz定时任务时间配置
quartz定时任务时间设置描述(2011-03-03 16:23:50)转载▼标签: quartz时间it 分类: 凌乱小记 这些星号由左到右按顺序代表 : * * * ...
- quartz实现定时功能实例详解(servlet定时器配置方法)
Quartz是一个完全由java编写的开源作业调度框架,下面提供一个小例子供大家参考,还有在servlet配置的方法 Quartz是一个完全由java编写的开源作业调度框架,具体的介绍可到http:/ ...
- Quartz定时任务详解一
以下是我在应用的的一个基本配置: #---------调度器属性---------------- org.quartz.scheduler.instanceName = TestScheduler o ...
- .Net Core 2.0 的 ConsoleApp 搭建 Quartz(xml配置)windows服务
零.创建一个.Net Core 2.0 的ConsoleApp 应用,建完就是这个样子了. 添加Log4Net 的引用,(不想看可以不看,个人习惯)Install-Package log4net添加C ...
- quartz简单应用
pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 ...
- quartz 配置运行
这篇文章是对quartz 2.2.1进行配置 分为spring 整合版本和QuartzInitializerServlet整合版本 首先是QuartzInitializerServlet整合版本 主要 ...
- Quartz定时任务学习(三)属性文件和jar
以下是我在应用的的一个基本配置: #---------调度器属性----------------org.quartz.scheduler.instanceName = TestSchedulerorg ...
随机推荐
- C++快速入门系列教程
C++ 60分钟入门教程:http://see.xidian.edu.cn/cpp/biancheng/view/2755.html
- Flasky学习笔记(一)
1. app.run(debug=True,host='10.0.2.15',port=8000)自定义host及port;
- 对"QQGame-大家来找茬"的辅助工具的改进
[前言]最近在博客园首页上看到有“大家来找茬”这个游戏(此游戏为找出两个相近图片的不同点)外挂的相关帖子,所以这里我也翻看了我之前(2009年5月)的写的一个简单的辅助程序(采用 VC6 开发的).我 ...
- tomcat8和7关于自定义tag的处理区别
今天将一直运行在tomcat-7.0.29(jdk1.6)上的应用迁移到tomcat-8.0.26(jdk1.7)上面,老显示如下错误: org.apache.jasper.JasperExcepti ...
- Extjs 百度地图扩展
var bmapps; Bsprint.EditMapInfoWindow = Ext.extend(Ext.Window, { form: null, constructor: function ( ...
- html, xhtml和xml
html, xhtml和xml 1.定义及特点: 1) html:Hyper Text Markup Language 超文本标记语言 是最早写网页的语言,但编码不规范,主要用于控制数据的显示和外观. ...
- 扩展easyui.datagrid,添加数据loading遮罩效果代码 --来自网摘收集
//jquery.datagrid 扩展 (function (){ $.extend($.fn.datagrid.methods, { //显示遮罩 loading: function(jq){ r ...
- linux expect命令使用入门
expect的核心是spawn expect send set spawn:spawn是进入expect环境后才可以执行的expect内部命令,相当于shell中的内置命令,通过它,调用需要执行的 ...
- Java堆内存的十个要点
Java中的堆空间是什么? 当Java程序开始运行时,JVM会从操作系统获取一些内存.JVM使用这些内存,这些内存的一部分就是堆内存.堆内存通常在存储地址的底层,向上排列.当一个对象通过new关键字或 ...
- .NET Framework 的 Quirk Version
今天在CSDN上看到一个帖子 :".net 4.0和4.5不同版本的Uri.ToString行为不同?", 调试.NET Framework 源代码发现,是这句代码起的作用 int ...