使用Quartz实现比Timer更强大的任务定时
2010-01-06 15:31
921 查看
提起定时,可能很多人会第一时间反应是Timer,今天我向大家介绍一下Quartz,Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。虽然可以通过属性文件(在属性文件中可以指定 JDBC 事务的数据源、全局作业和/或触发器侦听器、插件、线程池,以及更多)配置 Quartz,但它根本没有与应用程序服务器的上下文或引用集成在一起。结果就是作业不能访问 Web 服务器的内部函数;触发器有两种simpleTrigger和CronTrigger,对于更具体得调度采用后者。下面我对这两个分别做了个例子,如果有什么不对的,欢迎大家指出!
在做准备工作的时候,你需要下载一个jar包:quartz-1.6.6.jar.
如果大家还有什么问题,欢迎留言!
在做准备工作的时候,你需要下载一个jar包:quartz-1.6.6.jar.
package p1; import java.util.Date; import org.quartz.CronExpression; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.StatefulJob; import org.quartz.impl.StdSchedulerFactory; public class Test implements StatefulJob{ public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println("我是定时调用的"); } public void task() { /*-------------------SimpleTrigger调度----------------*/ //通过SchedulerFactory来获取一个调度器 /* SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler =null; //引进作业程序 JobDetail jobDetail = new JobDetail("jobDetail-s1","jobDetailGroup-s1", Test.class); //new一个触发器 SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger", "triggerGroup-s1"); //设置作业启动时间 long ctime = System.currentTimeMillis(); simpleTrigger.setStartTime(new Date(ctime)); //设置作业执行间隔,以毫秒为单位 simpleTrigger.setRepeatInterval(10000); //设置作业执行次数 simpleTrigger.setRepeatCount(10); //设置作业执行优先级默认为5 //simpleTrigger.setPriority(10); //作业和触发器设置到调度器中 try { scheduler=schedulerFactory.getScheduler(); scheduler.scheduleJob(jobDetail, simpleTrigger); //启动调度器 scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); }*/ /*-------------------CronTrigger调度----------------*/ //CronTrigger 支持比 SimpleTrigger 更具体的调度,而且也不是很复杂。 //基于 cron 表达式,CronTrigger 支持类似日历的重复间隔,而不是单一的时间间隔 //—— 这相对 SimpleTrigger 而言是一大改进。 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler =null; JobDetail jobDetail = new JobDetail("jobDetail2", "jobDetailGroup2", Test.class); CronTrigger cronTrigger = new CronTrigger("cronTrigger", "triggerGroup2"); try { CronExpression cexp = new CronExpression("0 54 15 ? * * "); //ps:关于CronExpression表达式所表达的具体含义,请参阅下一篇文章 cronTrigger.setCronExpression(cexp); } catch (Exception e) { e.printStackTrace(); } try { scheduler=schedulerFactory.getScheduler(); scheduler.scheduleJob(jobDetail, cronTrigger); scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); } } public static void main(String[] args) { Test t=new Test(); t.task(); } }
如果大家还有什么问题,欢迎留言!
相关文章推荐
- 使用System.Threading的Timer&Quartz.net两种方式实现定时执行任务,防止IIS释放timer对象
- 两种方式实现java定时器,使用quartz定时器框架和java自带Timer定时器,编写定时任务
- 使用Spring + quartz实现定时任务调度
- 使用Quartz.Net框架实现定时任务
- 使用Spring提供Quartz来实现定时任务
- MVC 使用Quartz.Net组件实现定时计划任务
- android使用Timer 和 TimerTask 实现定时任务
- 使用spring quartz实现定时任务
- 关于Java Web 使用Spring中使用Quartz(定时调用、实现固定时间执行), 触发定时器(执行某些任务)的实例
- 使用Java Timer实现定时任务
- 使用Quartz实现定时任务
- 使用quartz+spring实现简单的可配置化的定时任务(可和数据库配套使用)
- 使用 Timer 实现任务调度(定时任务)
- 使用spring quartz实现定时任务
- 使用Spring + quartz实现定时任务调度
- quartz的使用实现定时任务
- spring使用Quartz实现定时任务
- 第一节: Timer的定时任务的复习、Quartz.Net的入门使用、Aop思想的体现
- 使用Quartz实现定时任务
- 使用xml配置Quartz,实现定时任务