Quartz[kwɔːts]:石英,其框架和名字一样简单朴素又不失魅力,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框架(Quartz官网:http://www.quartz-scheduler.org/)。这个工具
在美团中的有大量使用,详见他们的官方博客:http://tech.meituan.com/ 。Quartz是一个很轻量级的java库,几乎包含了所有定时的功能。主要接口是Schedule,提供了一些简单的操作:安排任务或取消任务,启动或者停止任务。如果你想在应用中使用Quartz,
应该实现Job接口,包含了一个execute()方法。如果你想在一个任务执行时间到了的时候通知你,组件应该实现TriggerListener 或者JobListener 接口。Quartz任务可以在你的应用中启动和执行,可以作为一个独立的应用程序(通过RMI接口[即Remote Method
Invoke 远程方法调用]),也可是在一个J2EE应用中执行。
1. 何为定时任务调度框架?
简而言之,它可以领会我们的意图在未来某个时刻做我们想要做的事情,比如,每月月末的财务报表给财务部门,定时给领导发个邮件短信等等。这时候我们就需要用到任务调度框架Quartz了。其不仅简单易使用,并且可以与spring集成(这才是重点哦!就目前而
言,一个Java项目其基础框架不外乎SSH(struts2+spring+hibernate)、SSM(springMVC+spring+mybatis)。当然,也有一些团队喜欢springMVC+spring+hibernate这样搭建。不过,无论是那种搭配spring几乎是不可或缺的)。任务调度本身涉及到多线程
并发、运行时间规则制定和解析、场景保持与恢复、线程池维护等诸多方面的工作。如果直接使用自定义线程这种刀耕火种的原始办法,开发任务调度程序是一项颇具挑战性的工作。Java开源的好处就是:领域问题都能找到现成的解决方案(所以圈里也流行这么一句:
天上飞的理念,必有落地的产品)。
但任务调度除以时间为关注点外,还应考虑资源的分配。大多数系统都要对资源使用进行控制:服务线程的最大数目必须限额;考虑使用线程池以便共享服务的线程资源、降低频繁创建、销毁线程的消耗。
2. Quartz是什么?
Quartz是一个任务调度框架(库),它几乎可以集成到任何应用系统中。术语”job schedule”似乎为不同的人提供了不同的想法。总之,作业调度是负责执行(或通知)其他软件组件在预定时间执行的服务组件。虽然通过schedule可以简单实现一些系统任务定时执
行,当您学习如何使用它来驱动应用程序的业务流程的流程时,Quartz的全部潜力是可以实现的。
3. Quartz的一些特点
1)非常灵活的,并包含多个使用范例,它们可以单独或一起使用,以实现您所期望的行为,并使您能够以最“自然”的方式来编写您的项目的代码。
2)非常轻量级的,只需要非常少的配置 —— 它实际上可以被跳出框架来使用,如果你的需