您的位置:首页 > 其它

quartz任务调度框架的简单使用

2012-11-24 10:45 501 查看
前言
最近做了一个任务调度的功能,使用的是quartz框架,非常简单易用。

正题
简介
   Quartz是一个完全由java编写的开源作业调度框架,它可以与J2EE与J2SE应用程序相结合也可以单独使用。

   说简单些,就是它可以定时的调用你的任务(任务里面可以写你自己的逻辑或者调用你其他的模块或流程)。

简单应用
   quartz应用非常简单,搭好环境后只需要写一个实现job接口的实现类即可。

1、环境搭建
新建一个java项目,引入以下jar包:
   quartz2.1.1.jar(这个jar包会用到下面几个jar)

   Log4j-1.2.16.jar

   Slf4j-api-1.6.1.jar

   Slf4j-log4j12-1.6.1.jar

2、新建一个任务类(实现job接口)
MyJob.java:(放在job包下)
package job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class MyJob implements Job {

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("我的任务");
}
}


3、新建一个测试类

TestJob.java:

import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import job.MyJob;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

public class TestJob {

private static Scheduler sched = null;
/**
* @param args
* @throws SchedulerException
*/
public static void main(String[] args) throws SchedulerException {
TestJob t = new TestJob();
t.useJob();
t.addJob("myjob1", "5 * * ? * *", MyJob.class);//启动任务,每隔5s执行一次MyJob任务
//		t.deleteJob("myjob1");//停止任务
}

/**
* 启动Schedule
* @throws SchedulerException
*/
public void useJob() throws SchedulerException{
SchedulerFactory sf = new StdSchedulerFactory();
try {
sched = sf.getScheduler();
sched.start();
} catch (SchedulerException e) {
e.printStackTrace();
}
}

/**
* 任务中添加作业
* @param jobName 任务名称,可以自己命名
* @param spaceTime corn表达式,调用的时间,例如“5 * * ? * *”
* @param clazz job实现类
*/
public void addJob(String jobName,String spaceTime,Class clazz){
String groupName = jobName;
JobDetail jobs = newJob(clazz).withIdentity(jobName,groupName).build();
CronTrigger trigger;
try {
if(sched.isShutdown()){
sched.start();
}
trigger = newTrigger().withIdentity(jobName+groupName, groupName).withSchedule(cronSchedule(spaceTime)).build();
sched.scheduleJob(jobs, trigger);
} catch (Exception e) {
e.printStackTrace();
new Exception(e);
}

}

/**
* 在任务中删除改作业
* @param jobName
*/
public void deleteJob(String jobName){
String groupName = jobName;
try {
if(sched.isShutdown()){
sched.start();
}else{
JobKey key = new JobKey(jobName,groupName);
sched.deleteJob(key);
}
} catch (SchedulerException e) {
e.printStackTrace();
new Exception(e);
}
}
}


4、运行结果:



   quartz整个的使用很简单,唯一不太好理解的就是它的corn表达式,我简单说一下,corn表达式一般有六个(年份可以不写),依次是:秒
分 时
天 星期
月( 年份);注意每一个时间间隔中间都有一个空格,不标明的可以使用*号,比如每隔5秒执行一次就是“5
* * ? * *",详细的解释可见http://blog.csdn.net/kkdelta/article/details/7238581

附件源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: