定时任务Java编写综述
目前我所用过的定时任务机制主要分三类:OS级的Linux crontab命令方式、Java语言级的JDK自带API、第三方API接口如Quartz(当然,其他MVC框架如Spring基于Quartz实现了更人性化的API接口,此类接口一并归入Quartz类族)。
这三种方式相比,OS级不用专门开启监听器,占用系统资源较少,是定时任务首选的实现方式;JDK自带API主要是Timer和TimeTask,这些API提供的接口功能简单,往往不能满足用户定时任务设置需要;Quartz是Java语言编写的API,其可以单独部署,也可以作为系统的模块嵌入既有代码中,通过开启监听触发定时任务的方式实现,相对而言,特别是用此种方式开辟大量监听很耗资源。
下面分别介绍这三种常用的定时任务实现方式。
3. 第三方API接口如Quartz
Quartz是一个任务日程管理系统,这个系统可以与任何其他软件系统集成或者一起使用。简而言之,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。
Quartz相当“轻量”,并且需要非常少的步骤/配置,如果需求比较基本,Quartz确实非常容易使用。
Quartz具有容错性,并且可以在你系统重起的时候持久化(记住)被纳入日程的任务。
3.1 Quartz功能简介
Quartz特点:
Quartz能嵌入到任何独立的应用中运行。
Quartz能在应用服务器或者Servlet容器中实例化,并且能够参与XA事务。
Quartz能够以独立的方式运行(在它自己的Java虚拟机中),可以通过RMI使用Quartz。
Quartz可以被实例化为独立程序的集群(有负载均衡和容错能力)
3.2 从软件组件的角度来看Quartz
Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
如果你想将软件组件的执行纳入到日程中,它们只需简单地实现Job接口,这个接口有一个execute()方法。如果希望在日程安排的时间到达时通知组件,那么这些组件应实现TriggerListener或者JobListener接口。
Quartz主过程可以在应用中启动或者运行,也可以作为一个独立的应用(带有RMI接口),或者在一个J2EE 应用服务器中运行,并且可作为其它J2EE组件的一种引用资源。
3.3 为什么不使用java.util.Timer?
从JDK1.3开始,Java有了内建的定时器功能,即通过java.util.Timer和java.util.TimerTask来实现,为什么有人用Quartz而不用这些标准特性呢?有很多原因,下面是其中的一些:
1. Java定时器没有持久化机制。
2. Java定时器的日程管理不够灵活(只能设置开始时间、重复的间隔,设置特定的日期、时间等)
3. Java定时器没有使用线程池(每个Java定时器使用一个线程)
4. Java定时器没有切实的管理方案,你不得不自己完成存储、组织、恢复任务的措施。
一言以蔽之,这两个新类可以实现一个最基本的调度器。也就只能作为我们理想的完整调度器框架的一个小的部件。任何严格意义的作业调度器都提供直接指定执行时间,存储作业信息到多种介绍和使用钩子进行定制及其他更多的功能。单纯靠JDK的那两个类还不足以构建一个真正的作业调度器。JAVA的Timer类也没办法对作业和触发器作相应的组织,使用每任务一个线程,而不是线程池的方式,还有其他不足之处难以成全其实现一个完全意义的作业调度器。
流行的几个解决方案
Flux Scheduler:www.fluxcorp.com/
Enterprise Batching Queuing: www.argent.com/p/qe/qe.html
Unicenter AutoSys Job Management 4.5:www.ca.com
BMC Software ControlM: www.bmc.com
Cybermation ESP Espresso 4.2: www.cybermation.corly;9'm
Vexus consulting Avatar Job Scheduling Suite 4.5.5 :www.vexus.ca
Argent software The Argent Job Scheduler 4.5A :www.argent.com
Tidal Enterprise Scheduler: www.tidalsoftware.com
相关推荐
- Quartz 是一个完全由Java编写的开源作业调度框架,它可以在Java应用中用于执行定时任务。Quartz 支持集群环境,可以在多台服务器上分布式运行,以提高系统的可用性和可靠性。 2. **定时任务**: - 定时任务是在...
总结来说,Quartz是Java中强大的定时任务库,通过它我们可以方便地创建和管理复杂的任务调度,包括但不限于在特定时间点执行任务、按固定间隔重复执行、甚至在满足特定条件时触发任务。相比`java.util.Timer`,...
Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入探讨Quartz的基本实现,以及如何在Java项目中运用它。 首先,Quartz的核心概念包括作业(Job)、...
【标题】"定时任务完整案例 Java quartz" 涉及的核心技术是Java的调度库Quartz,它是一个开源的工作调度框架,广泛应用于企业级应用中,用于执行定时任务。Quartz能够帮助开发者创建、调度和执行任务,实现高度灵活...
Quartz是一款广泛使用的开源作业调度框架,它允许开发者在Java应用程序中定义和执行定时任务。在实际应用中,我们可能需要根据业务需求动态地配置定时任务的执行方式,例如,某些任务可能需要串行执行,而其他任务则...
在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合...
在这个“quartz 实现按天、按周、按月定时任务的简单demo”中,我们将探讨如何使用 Quartz 在 Java 环境下设置按天、按周和按月的定时任务。 首先,我们需要引入 Quartz 的依赖库到项目中。通常,这可以通过 Maven ...
总的来说,Spring、MyBatis和Quartz的结合,为Java开发者提供了一套强大的工具集,可以方便地构建和管理具有动态定时任务功能的企业级应用。这种技术栈的使用,不仅可以提高开发效率,还能保证应用的稳定性和扩展性...
Java SpringBoot Quartz 定时任务是一个广泛应用于企业级开发中的技术组合,主要用于自动化执行周期性的任务。SpringBoot作为轻量级的框架,简化了Spring应用的初始搭建以及开发过程,而Quartz则是一个功能强大的...
在Java世界里,Quartz是一个强大的、完全开源的作业调度框架,广泛用于构建复杂的时间触发任务。本篇文章将深入探讨如何使用Quartz在Java应用程序中实现任务调度。 Quartz库提供了一个灵活的API,可以创建、调度和...
Spring框架结合Quartz库,提供了一种强大而灵活的方式来管理这些定时任务。本项目旨在演示如何利用Spring和Quartz从数据库中动态加载定时任务,并实现对它们的增删改查功能。以下是关于这个主题的详细知识讲解。 ...
【SSM+Quartz 定时任务管理Demo详解】 在Java Web开发中,定时任务是一项常见且重要的功能,用于执行一些周期性或者特定时间点的任务,例如数据统计、备份、清理等。本Demo以"基于SSM+quartz的定时任务管理"为主题...
总之,Java的定时任务可以通过内置工具或Quartz等外部库来实现。选择哪种方式取决于具体的需求和项目规模。对于简单的定时任务,内置工具足以满足;而对于复杂、需要高灵活性和扩展性的定时任务,Quartz是更好的选择...
Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理能力。作为一个专业的IT行业大师,我将深入解析Quartz的核心概念、工作原理以及如何实现简单的定时任务。 Quartz的主要功能在于允许...
Quartz是一个开源的作业调度框架,能够触发在指定时间运行的任务,广泛应用于Java应用程序中进行定时任务的管理。Quartz的核心是Cron表达式,它允许开发者以一种灵活且可读性高的方式定义任务的执行时间。 #### ...
在Java开发中,定时任务是不可或缺的一部分,尤其在企业级应用中,用于执行定期的数据处理、报表生成、系统维护等工作。Spring框架与Quartz库的整合提供了强大的动态管理定时任务的能力。下面我们将深入探讨这个主题...
Quartz是一款开源的作业调度框架,它允许开发者创建、安排和管理定时任务。在Java应用程序中,Quartz常被用来实现后台任务的自动化执行,比如数据同步、日志清理、发送邮件等。本教程将详细介绍如何动态地在Quartz中...
Quartz是一款开源的作业调度框架,它允许在Java应用程序中创建和管理定时任务。这个"Quartz定时任务简单列子"可能是一个简单的教程或者示例项目,用于展示如何在Java应用中集成和使用Quartz来执行预定的任务。 ...
Quartz是一款强大的开源任务调度库,它能够与Java应用程序无缝集成,实现复杂的时间触发任务。当我们遇到Spring定时器执行两次或者更多次的问题时,这通常是由于配置不当或者多线程并发导致的。下面将详细介绍如何...
Quartz 是一个开源的作业调度框架,能够帮助开发者轻松地在 Java 应用程序中实现各种复杂的定时任务。它支持触发器(Trigger)、日历(Calendar)等功能,具有强大的扩展性和灵活性。 #### Quartz 动态定时任务原理...