了解Job和JobDeatil ,JobDataMap (三)
一:定义
Job:实现任务逻辑的接口。
JobDeatil:JobDeatil为Job提供了许多设置属性,以及JobDataMap成员变量属性,他用来储存特定的Job实例状态信息,调度器需要使用JobDeatil对象添加Job实例。
二:
Job接口源码:
public interface Job {
void execute(JobExecutionContext context)
throws JobExecutionException;
}
Job有且只有一个方法:execute() 负责执行业务逻辑。
JobExecutionContext:包含job执行的上下文。里面包含了一个重要的类(JobDataMap :主要是包含我们想要输入的参数)。
这个方法要抛出一个异常 JobExecutionException。
JobDeatil的重要属性:
name:任务的名称。
group:任务所在的组(默认值:DEFAULT)。
jobClass:任务的实现类。
jobDataMap:传参的作用。
代码是上一节的代码:
实现代码:JobDetail jobDetail = JobBuilder.newJob(JobClass.class).withIdentity("jobName","group").build();

JobDetail jobDetail = JobBuilder.newJob(JobClass.class).withIdentity("jobName","group").build();
System.out.println(jobDetail.getKey().getName());//jobName
System.out.println(jobDetail.getKey().getGroup());//group
System.out.println(jobDetail.getJobClass().getName());//quartz.JobClass

jobDataMap
JobDataMap中可以包含不限量的(序列化的)数据对象,在job实例执行的时候,可以使用其中的数据;JobDataMap是Java Map接口的一个实现,额外增加了一些便于存取基本类型的数据的方法。
实现:

JobDetail jobDetail = JobBuilder.newJob(JobClass.class).withIdentity("jobName", "group")
.usingJobData("Double", 2.0D)
.usingJobData("String", "字符串").build();
System.out.println(jobDetail.getJobDataMap().getString("String"));//字符串
System.out.println(jobDetail.getJobDataMap().getDoubleValue("Double"));//2.0
在job的执行过程中,可以从JobDataMap中取出数据

第二种获取的:
是在JobClass里设置属性,这里的属性名称必须和jobDetail设置的key值相同;

package quartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey; public class JobClass implements Job {
private String stringValue;
private Double doubleValue; public String getStringValue() {
return stringValue;
} public void setStringValue(String stringValue) {
this.stringValue = stringValue;
} public Double getDoubleValue() {
return doubleValue;
} public void setDoubleValue(Double doubleValue) {
this.doubleValue = doubleValue;
} public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println(stringValue + doubleValue);
/*
* JobKey jobKey=arg0.getJobDetail().getKey();
* System.out.println(jobKey.getGroup()+jobKey.getName());
*/ /*
* Date date=new Date(); SimpleDateFormat sf=new SimpleDateFormat(
* "yyyy-MM-dd HH:mm:ss"); System.out.println("当前时间为:"+sf.format(date));
* // 编写业务逻辑 System.out.println("hello Quartz");
*/
/*
* JobDataMap jobDataMap=arg0.getJobDetail().getJobDataMap();
* System.out.println(jobDataMap.getDouble("Double"));
* System.out.println(jobDataMap.getString("String"));
*/ } }
三:生命周期
每次在调度器在执行job的时候,他是在execute()方法前创建一个新的job实例。当调用完之后,关联的job对象实例会被释放,释放之后将会被垃圾回收机制回收。
了解Job和JobDeatil ,JobDataMap (三)的更多相关文章
- Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- Quartz教程三:Job与JobDetail介绍
Quartz教程三:Job与JobDetail介绍 原文链接 | 译文链接 | 翻译:nkcoder | 校对: 本系列教程由quartz-2.2.x官方文档翻译.整理而来,希望给同样对quartz感 ...
- JobDataMap 不能被序列化如何解决研究中
JobDataMap被用来保存一系列的(序列化的)对象,这些对象在Job执行时可以得到.JobDataMap是Java Map接口的一个实现,而且还增加了一些存储和读取主类型数据的便捷方法. 如果使用 ...
- [译]Quartz.Net 框架 教程(中文版)2.2.x 之第三课 更多关于Jobs和JobDetails
第三课 更多关于Jobs和JobDetails 在这二课我们已经学习到,Jobs接口非常容易实现,只有一个execute方法.我们需要再学习一些知识去理解jobs的本质,Job接口的execute方法 ...
- quartz——JobExecutionContext和JobDataMap
控制器传值,需要根据对应值创建,启动以及对定时任务的相关操作:JobExecutionContext和JobDataMap基本用法,代码待优化,主要是用法吧第一:控制器, @RequestMappin ...
- quartz的使用(三)
1.在数据源数据库中执行下载的quartz的sql语句(创建11张表),其中表头qrtz_可以在在配置文件中更改,对应表创建时更改org.quartz.jobStore.tablePrefix=qrt ...
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- Jquery的点击事件,三句代码完成全选事件
先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
随机推荐
- class空格多类名
1.class属性唯一但是有空格,选择空格两边唯一的哪一个 <div id="tempConfigTable" class="dtb-style-1 table-d ...
- ORM常用字段介绍
Django中的ORM Django项目使用MySQL数据库 1. 在Django项目的settings.py文件中,配置数据库连接信息: DATABASES = { "default&qu ...
- maven pom.xml文件 仓库搜索服务
POM(Project Object Model),即项目对象模型,是 Maven 工程的基本工作单元,是一个 XML 文件,包含了项目的基本信息,用于描述项目如何构建.声明项目依赖 等等 Maven ...
- zeromq学习记录(九)练习代码学习ZMQ_ROUTER ZMQ_READLER
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...
- hive、sqoop、MySQL间的数据传递
hdfs到MySQL csv/txt文件到hdfs MySQL到hdfs hive与hdfs的映射: drop table if exists emp;create table emp ( id i ...
- poj 3087 Shuffle'm Up (模拟过程)
Description A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuff ...
- XamlWriter-将对象树写入Xaml
WPF通常用Xaml格式创建对象树.您还可以使用XamlWriter类进行反方向操作——将对象树写入Xaml. 对于XamlWriter来说,将对象转换成良好的Xaml表示形式通常很容易.但是,您不能 ...
- 初识Twisted(一)
pip install Twisted 安装Twisted库 from twisted.internet import reactor #开启事件循环 #不是简单的循环 #不会带来任何性能损失 rea ...
- utf-8转gb2312
近日在对一个json串进行转码时,显示中文乱码,原因是json串编码方式为utf-8,而我程序在windows上采用的是多字节编码方式,即采用gb2312编码.这里就存在一个utf-8到gb2312的 ...
- 开源播放器 ijkplayer (四) :Ijkplayer切换网络时停止播放的问题处理
问题起因: 在进行ijkplayer播放器的测试时,发现ijkplayer播放器在切换网络时出现直播画面停止的问题. 问题分析: 抓取日志发现:tv.danmaku.ijk.media.player. ...