org.quartz.jobStore.misfireThreshold = 60000 #60秒 默认值
那么执行第一次作业是在10:01秒,这时会设定下一次的执行时间为10:02秒,要等一个作业执行完之后才有可用线程,大概要在10:11秒才能执行前面安排的应该在10:02执行的作业,这时就会用到misfireThreshold, 因为10:11与10:02之间的差值小于6000,所以执行该作业,并以10:02为基准设置下一次执行时间为10:03,这样造成每次实际执行时间与安排时间错位
如果 org.quartz.jobStore.misfireThreshold = 6000 #秒
同样,在10:11计划执行安排在10:02的作业,发现10:11与10:02之间的差值小于6000,那么直接跳过该作业,执行本应在当前时间执行的作业,这时候会以10:11为基准设定下次作业执行时间为10:12
misfireThreshold只有当job任务被阻塞时才有效,如果线程池里线程很多,该参数没有意义。所以大部分时候只对有状态的job才有意义。
public class HelloJob implements StatefulJob {
public void execute(JobExecutionContext context) {
DateFormat df = new SimpleDateFormat("hh:mm:ss");
System.err.println("[" + Thread.currentThread().getName() + "] Now: "
+ df.format(context.getFireTime()) + " Scheduled: "
+ df.format(context.getScheduledFireTime()) + " Previous: "
+ df.format(context.getPreviousFireTime()) + " Next: "
+ df.format(context.getNextFireTime()));
try {
Thread.sleep(10 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
执行次数:
SimpleTrigger trigger2 = new SimpleTrigger();
trigger2.setName("trigger2");
trigger2.setGroup("group");
trigger2.setStartTime(new Date());
trigger2.setRepeatInterval(2000);
trigger2.setRepeatCount(4);
sched.scheduleJob(job2, trigger2);
执行结果:
60秒执行任务:
[DefaultQuartzScheduler_Worker-2] Now: 05:36:42 Scheduled: 05:36:42 Previous: 05:36:40 Next: 05:36:44
[DefaultQuartzScheduler_Worker-3] Now: 05:36:52 Scheduled: 05:36:44 Previous: 05:36:42 Next: 05:36:46
[DefaultQuartzScheduler_Worker-4] Now: 05:37:02 Scheduled: 05:36:46 Previous: 05:36:44 Next: 05:36:48
[DefaultQuartzScheduler_Worker-5] Now: 05:37:12 Scheduled: 05:36:48 Previous: 05:36:46 Next: 05:36:50
3秒执行任务:
[DefaultQuartzScheduler_Worker-2] Now: 05:41:36 Scheduled: 05:41:36 Previous: 05:41:34 Next: 05:41:38
[DefaultQuartzScheduler_Worker-3] Now: 05:41:46 Scheduled: 05:41:46 Previous: 05:41:36 Next: 05:41:48
[DefaultQuartzScheduler_Worker-4] Now: 05:41:56 Scheduled: 05:41:56 Previous: 05:41:46 Next: 05:41:58
[DefaultQuartzScheduler_Worker-5] Now: 05:42:06 Scheduled: 05:42:06 Previous: 05:41:56 Next: 05:42:08
所以说:misfireThreshold 参数对执行次数并无影响,只是对cpu对线程处理的机制(会影响效率)有所影响而已。
分享到:
相关推荐
本资料主要探讨了Quartz的三种调度形式以及在Spring框架中的整合,并涉及了参数传递的相关知识。 一、Quartz的三种调度形式 1. 单纯的Quartz调度 在不依赖任何框架的情况下,直接使用Quartz API进行任务调度。...
以下是配置文件中的一些关键参数: 1. **quartz.scheduler.instanceName**:这个属性用于设定调度器的唯一标识,便于区分运行在同一系统中的多个 Quartz 实例。 2. **quartz.threadPool.type**:定义了线程池的...
Quartz定时任务详解 Quartz 是一个功能齐全的开源作业调度系统,可以用于从最小的应用程序到大型企业系统。Quartz 非常灵活,包含多个可以单独或一起使用的使用范例,以实现您想要的行为,并使您能够以对您的项目最...
标签中的“动态设定参数”和“定时任务”进一步强调了Spring Quartz的灵活性。在实际应用中,这种动态调整的能力对于响应业务变化、实现灵活的定时任务管理至关重要。例如,我们可以根据系统负载、用户行为或其他...
CronExpression是一种用于配置Quartz调度器中定时任务的表达式格式。通过这种格式化的字符串,用户能够灵活地定义任务执行的时间规律。CronExpression由六个或七个字段组成,各字段之间用空格分隔,具体包括秒、分、...
定时任务时间参数转换,cron表达式轻易转换,更易理解时间参数设置类型及转换含义
Quartz是一个开源的作业调度框架,它允许Java开发者在应用程序中定义复杂的任务调度。Quartz中文教程学习资源对于初学者来说是非常有价值的,因为它可以帮助你快速理解这个强大的工具,并将其有效地应用到实际项目中...
Quartz 使用详解 Quartz 是一个功能强大的作业调度器,可以帮助开发者实现复杂的任务调度和执行。下面是关于 Quartz 使用详解的知识点总结。 一、实例化 Scheduler 在使用 Quartz 之前, 必须使用 ...
QuartzAPI是一个强大的任务调度库,广泛用于Java应用程序中,以实现定时任务的自动化执行。这个"QuartzAPI中文chm"文档是专门为中文用户设计的学习资源,旨在帮助开发者快速理解和掌握Quartz的核心功能和使用方法。 ...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。 Quartz中有两个基本概念:作业和触发器。作业是能够调度的可执行任务,触发器提供了对作业的调度。
### Java Quartz 详解 #### 一、Quartz 概述 Quartz 是一款开源的作业调度框架,可以用来实现各种定时任务的需求。它提供了一种简单的方式来定义触发器(Trigger),用于设定作业(Job)何时运行。Quartz 的灵活性...
可以通过`quartz.properties`文件配置Quartz的一些全局参数,比如数据库连接、线程池大小等。例如: ``` org.quartz.scheduler.instanceName = MyScheduler org.quartz.jobStore.class = org.quartz.impl....
赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Spring 整合 Quartz 框架过程详解 本文主要介绍了 Spring 整合 Quartz 框架的过程详解,通过示例代码对大家的学习或者工作具有参考学习价值。 一、Quartz 框架简介 Quartz 是一个完全由 Java 编写的开源任务调度...
Quartz是一款广泛使用的开源任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。在Quartz 2.2.3版本中,初始化数据库是使用Quartz的关键步骤,因为Quartz依赖于一个持久化存储来保存作业和触发器的信息...
Quartz是Java领域中广泛应用的一款开源的作业调度框架,它允许开发者在应用程序中安排复杂的定时任务。本教程将深入探讨Quartz的核心概念、配置、API使用以及如何在实际项目中集成和管理定时任务。 一、Quartz核心...
Quartz 是一个开源的作业调度框架,用于在 Java 应用程序中实现复杂的工作调度。它的设计目标是成为一个完全可插拔的作业调度系统,能够嵌入到任何使用 Java 的应用中,提供灵活且可靠的定时任务执行服务。Quartz 的...
在Quartz中,我们可以利用JobDataMap来传递参数。在创建Trigger时,我们可以将参数放入JobDataMap中: ```java Map, Object> jobDataMap = new HashMap(); jobDataMap.put("param1", "value1"); jobDataMap.put(...
Quartz 是一个开源的作业调度框架,广泛应用于Java应用程序中,用于执行定时任务。它提供了丰富的API和灵活性,使得开发者可以方便地定义、安排和管理各种任务。版本1.8.6是Quartz的一个稳定版本,它包含了对数据库...