由于job每次被执行时都会创建一个新的实例,

jobDetail实例时,要进行数据存储或者,特殊字段操作,需要每次schedul执行job时保留之前的数据,

那么就需要job在有状态下保持之前的数据信息,从而避免每次scheduler从新创建新的实例的无状态、

JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class)
.withIdentity("myjob", "group")
//jobDataMap 在构建JobDetail时,可以将数据放入JobDataMap,
.usingJobData("jobSays", "Hello World!")
.usingJobData("myFloatValue", 3.14f)
.usingJobData("count", 0)
.build();

/**
* :将该注解加到job类上,告诉Quartz不要并发地执行同一个job定义(这里指特定的job类)的多个实例。
* 请注意这里的用词。拿前一小节的例子来说,
* 如果“SalesReportJob”类上有该注解,
* 则同一时刻仅允许执行一个“SalesReportForJoe”实例,
* 但可以并发地执行“SalesReportForMike”类的一个实例。
* 所以该限制是针对JobDetail的,而不是job类的。
* 但是我们认为(在设计Quartz的时候)应该将该注解放在job类上,
* 因为job类的改变经常会导致其行为发生变化。
*/
@DisallowConcurrentExecution //以上是官方文档一堆废话,总结一句就是,限制job的实例(jobDetai)被并发执行
/**此注解
* 多次调用job时都会对job进行持久化,即保存一些特定信息
没有此注解每次实例都会创建一个jobDataMap不会保存上次创建的信息
*/
@PersistJobDataAfterExecution
public class QuartzJob implements Job{
 @Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
++count;
System.out.println(jobExecutionContext.getJobDetail().getKey().getName()+"被第"+count+"次调用");
jobExecutionContext.getJobDetail().getJobDataMap().put("count",count);
// System.out.println("此处获取的是融合Map的次数比指定jobDwtail的jobDetailMap次数少一次");
// jobExecutionContext.getMergedJobDataMap().put("count",count);
// System.out.println(jobExecutionContext.getMergedJobDataMap().getIntValue("count"));

}
}

myjob被第1次调用
myjob被第2次调用
myjob被第3次调用

记录jobDetail状态

JOB状态与并发的更多相关文章

  1. nodejs学习笔记_nodejs和PHP在基础架构上的差别--共享状态的并发

    绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明确node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,: ...

  2. Mysql 查看连接数,状态 最大并发数(赞)

    Mysql 查看连接数,状态 最大并发数(赞)   -- show variables like '%max_connections%'; 查看最大连接数 set global max_connect ...

  3. Mysql 查看连接数,状态 最大并发数

    show status like '%max_connections%'; ##mysql最大连接数set global max_connections=1000 ##重新设置show variabl ...

  4. Mysql 查看连接数,状态 最大并发数 && 怎么设置才合理

    show status like '%max_connections%'; ##mysql最大连接数 set global max_connections=1000 ##重新设置 show varia ...

  5. Mysql 查看连接数,状态 最大并发数,以及设置连接数

    show variables like '%max_connections%'; 查看最大连接数 set global max_connections=1000  重新设置最大连接数 set-vari ...

  6. 031.[转] 从类状态看Java多线程安全并发

    从类状态看Java多线程安全并发 pphh发布于2018年9月16日 对于Java开发人员来说,i++的并发不安全是人所共知,但是它真的有那么不安全么? 在开发Java代码时,如何能够避免多线程并发出 ...

  7. Java并发编程学习笔记(三)——对象的组合

    重要概念: 1.在设计线程安全类的过程中,需要包含以下三个基本要素: (1)找出构成对象状态的所有变量. (2)找出约束状态变量的不变性条件. (3)建立对象状态的并发访问管理策略. 2.

  8. java 并发性和多线程 -- 读感 (一 线程的基本概念部分)

    1.目录略览      线程的基本概念:介绍线程的优点,代价,并发编程的模型.如何创建运行java 线程.      线程间通讯的机制:竞态条件与临界区,线程安全和共享资源与不可变性.java内存模型 ...

  9. java并发编程实践学习(2)--对象的组合

    先验条件(Precondition):某些方法包含基于状态的先验条件.例如,不能从空队列中移除一个元素,在删除元素前队列必须处于非空状态.基于状态的先验条件的操作成为依赖状态操作. 在单线程中,如果某 ...

随机推荐

  1. 两万字Vue.js基础学习笔记

    Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...

  2. 给你的Mac 整个好用的命令行iTerm2 + zsh + oh-my-zsh + powerlevel10k

    给你的Mac 整个好用的命令行iTerm2 + zsh + oh-my-zsh + powerlevel10k 介绍 iTerm2 是一个MacOS 下的终端模拟器,和其他的终端本质上没啥大不同.但相 ...

  3. 第1天 Mark Down 学习及DOS命令

    Markdown学习 标题 "#加空格"几个#就表示几级标题 字体 helloworld!一两个两个*号 helloworld!一边一个*号 helloworld! 一边三个号 h ...

  4. 如何让py生成pyd

    pyd文件类似于C++中的dll,可以编译,但是看不到源代码. py转换成pyd参考链接:https://blog.csdn.net/weixin_44493841/article/details/1 ...

  5. java try_catch 分析

    1.若一段代码前有异常抛出,并且这个异常没有被捕获,这段代码将产生编译时错误「无法访问的语句」.如 public class try_catch_Demo { public static void m ...

  6. JS进度条顺滑版实现

    进度条不顺滑 相信大多前端同学都自己写过音频.视频播放器,实现并不复杂.最近在小程序里,做了一个类似微博刷视频的需求.其中有一部分功能需要实现自定义进度条,在做完第一版之后发现进度条不顺滑,而后想查查 ...

  7. Redis.conf分析

    Redis.conf 单位 配置文件对大小写不敏感 # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1m ...

  8. IDEA输出乱码“淇℃伅”

    尝试过在IDEA中tomcat的vmoptions中加入代码 -Dfile.encoding=GBK 没什么用 最后找到了这个方法 参考链接 ①在Tomcat文件夹下找到conf ②找到logging ...

  9. 从net到java:java快速入门

    学习java那是不可能的,到为什么不学习一下呢.仅为总结.希望自己在不久的将来能书写优美的java程序.加油!奥利给 1.注释 注释的重要性不言而喻,我们不管写什么代码注释必不可少,那么java的注释 ...

  10. C++ //继承同名成员处理方式

    1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Base 6 { 7 pu ...