Quartz是一个作业调度框架.
具体说明请参考项目主页
http://www.opensymphony.com/quartz
下载主页:
好的,速度开始我们的第一个Quartz程序吧.
import
java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/** */ /**
* 调度作业类,必须实现Job接口
*
* @author zdw
*
*/
public class StringTest implements Job
{
/** *//**
* 要执行的方法
*/
public void execute(JobExecutionContext arg0) throws JobExecutionException
{
System.out.println("execute at " + new Date());
}
}
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/** */ /**
* 调度作业类,必须实现Job接口
*
* @author zdw
*
*/
public class StringTest implements Job
{
/** *//**
* 要执行的方法
*/
public void execute(JobExecutionContext arg0) throws JobExecutionException
{
System.out.println("execute at " + new Date());
}
}
调度控制类:
import
java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
/** */ /**
*
* @author zdw
*
*/
public class QuartzTest
{
public static void main(String args[])
{
// 得到可用客户端处理调度程序的工厂
SchedulerFactory schedFact = new StdSchedulerFactory();
// 高度程序接口,控制JobDeail和Trigger
try
{
Scheduler sched = schedFact.getScheduler();
// 表示给定工作类的详细信息
JobDetail jobDetail = new JobDetail("myJob", null, StringTest.class);
// 触发器
Trigger trigger = TriggerUtils.makeSecondlyTrigger();
// 设置开始时间,这时设置的是每一秒执行一次
trigger.setStartTime(TriggerUtils.getEvenSecondDateBefore(new Date()));
// 必须设置,不能为空
trigger.setName("firstTrigger");
// 为调度程序设置具体工作和触发器
sched.scheduleJob(jobDetail, trigger);
// fire
sched.start();
} catch (SchedulerException e)
{
e.printStackTrace();
}
}
}
运行一下输出结果为:
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
/** */ /**
*
* @author zdw
*
*/
public class QuartzTest
{
public static void main(String args[])
{
// 得到可用客户端处理调度程序的工厂
SchedulerFactory schedFact = new StdSchedulerFactory();
// 高度程序接口,控制JobDeail和Trigger
try
{
Scheduler sched = schedFact.getScheduler();
// 表示给定工作类的详细信息
JobDetail jobDetail = new JobDetail("myJob", null, StringTest.class);
// 触发器
Trigger trigger = TriggerUtils.makeSecondlyTrigger();
// 设置开始时间,这时设置的是每一秒执行一次
trigger.setStartTime(TriggerUtils.getEvenSecondDateBefore(new Date()));
// 必须设置,不能为空
trigger.setName("firstTrigger");
// 为调度程序设置具体工作和触发器
sched.scheduleJob(jobDetail, trigger);
// fire
sched.start();
} catch (SchedulerException e)
{
e.printStackTrace();
}
}
}
execute at Thu May
08
14
:
54
:
48
CST
2008
execute at Thu May 08 14 : 54 : 49 CST 2008
execute at Thu May 08 14 : 54 : 50 CST 2008
execute at Thu May 08 14 : 54 : 51 CST 2008
execute at Thu May 08 14 : 54 : 52 CST 2008
显然已经按我们的要求每隔一秒执行了一次方法.
execute at Thu May 08 14 : 54 : 49 CST 2008
execute at Thu May 08 14 : 54 : 50 CST 2008
execute at Thu May 08 14 : 54 : 51 CST 2008
execute at Thu May 08 14 : 54 : 52 CST 2008
注意这个工程需要用到的jar有:
quartz
-
all
-
1.6
.
1
-
RC1.jar
commons - collections - 3.2 .jar
commons - logging - 1.1 .jar
这些jar包在你下载的quartz-1.6.1-RC1.zip都能找到.
commons - collections - 3.2 .jar
commons - logging - 1.1 .jar