定时调度Quartz框架学习小demo

来源:互联网 发布:数据库数据一致性问题 编辑:程序博客网 时间:2024/06/08 14:54

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.2.1。不过我之前在网上下载的是1.8.6版本,所以本文中的例子就采用1.8.6来实现。 

工程结构目录图如下:

1.导入相关jar包。主要有quartz的核心包quartz-all-1.8.6.jar,还有log4j的相关jar包。

2.实现一个可以被调度的作业Job.创建一个测试作业TestJob类,实现Job接口,实现接口的execute()方法。

package com.lee;import java.util.Date;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class TestJob implements Job {private boolean isRunning = false;public void execute(JobExecutionContext context) throws JobExecutionException { if(!isRunning){System.out.println(new Date()+"  作业开始被调度.....");for (int i = 1; i <= 100; i++) {System.out.println("  作业完成"+i+"%");try {Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println(new Date()+"  作业被调度完成.");}else {System.out.println(new Date()+"  作业退出");}}}

3.使用工厂创建调度器实例,用2中的作业创建JobDetail实例,创建触发器trigger,然后用调度器把作业和trigger关联起来,最后调用开始调度的方法。

package com.lee;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SimpleTrigger;import org.quartz.Trigger;import org.quartz.impl.StdSchedulerFactory;public class MyQuartzServer {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubMyQuartzServer server = new MyQuartzServer();try {server.startScheduale();} catch (SchedulerException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private void startScheduale()throws SchedulerException{//1.使用工厂创建调度器实例Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();//2.以作业创建JobDetail实例JobDetail jobDetail = new JobDetail("dd",Scheduler.DEFAULT_GROUP,TestJob.class);//3.创建trigger,创建一个简单的调度器//指定该任务呗重复调度50次,每次间隔20秒Trigger trigger = new SimpleTrigger("dd",Scheduler.DEFAULT_GROUP, 50, 20000);//4.调度器将作业与trigger关联起来scheduler.scheduleJob(jobDetail, trigger);//5.开始调度scheduler.start();}}

Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依赖一套松耦合的线程池管理部件来管理线程环境。(引用自百度百科)

如果有什么好的建议,欢迎留言。谢谢。


0 0
原创粉丝点击