码迷,mamicode.com
首页 > 其他好文 > 详细

Quartz定时

时间:2015-03-17 08:14:30      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

前段时间有位朋友问了我Quartz的使用,于是尝试些了个简单的例子向解释Quartz的使用

Quartz的一些基本使用

package com.quartz;

import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerContext;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;

public class ActionJob implements Job {
	
	public static void main(String[] args) {
		try {
			StdSchedulerFactory factory = new StdSchedulerFactory();
			Scheduler scheduler = factory.getScheduler();
			SchedulerContext context = scheduler.getContext();
			context.put("args", "args[0]");
			String expression = "00 26 15 ? * MON";
			JobDetail detail = newJob(ActionJob.class)
					.withIdentity("detail_name", "detail_group").build();
			Trigger trigger = newTrigger()
					.withIdentity("trigger_name", "trigger_group")
					.withSchedule(cronSchedule(expression)).build();
			scheduler.scheduleJob(detail, trigger);
			scheduler.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		Scheduler scheduler = context.getScheduler();
		TriggerKey triggerKey = context.getTrigger().getKey();
		try {
			System.out.println("外部参数:" + scheduler.getContext().getString("args"));
//			scheduler.pauseTrigger(triggerKey);执行任务前暂停这个任务,按需使用
			String path = "com.quartz.Task";
			//加载任务类
			Class<?> clas = Class.forName(path);
			Object o = clas.newInstance();//实例化已任务类对象
			//获取启动方法,并启动
			clas.getMethod("execute", Config.class).invoke(o, new Config());
		} catch (Exception e) {
			e.printStackTrace();
		}
//		finally {
//			try {
//				scheduler.resumeTrigger(triggerKey);
//			} catch (SchedulerException e) {
//				e.printStackTrace();
//			}
//		} //不管任务是否成功,始终都解除这个任务。按需使用
	}
}

任务类

package com.quartz;

public class Task {
	
	public void execute(Config config) {
		//执行任务
		System.out.println("just " + config.name);
	}
}

任务所需配置类

package com.quartz;

public class Config {

	public String name = "test";
}

测试输出

外部参数:args[0]
just test


Quartz定时

标签:

原文地址:http://my.oschina.net/u/1240328/blog/387534

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!