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

前言

最近做了一个任务调度的功能,使用的是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

附件源码下载

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值