package test;
import java.text.ParseException;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
public class TestJob implements Job{
private static intcnt = 0;
@Override
public voidexecute(JobExecutionContext context) throws JobExecutionException {
System.out.println("TestJob" + (++cnt) + " Run! " +new Date());
Scheduler scheduler=context.getScheduler();//获取执行的Scheduler
try {//执行3次之后关闭
if(!scheduler.isShutdown()&&cnt==3)//判断是否在执行
scheduler.shutdown();
} catch(SchedulerException e) {
e.printStackTrace();
}
}
public static voidmain(String [] args) throws SchedulerException, ParseException{
SchedulerFactoryschedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();//调度器启动
// 参数:任务名,任务组,任务执行类 ,任务执行类决定执行哪个execute方法
JobDetail jobDetail = new JobDetail("TestJob",
"TestJobGroup", TestJob.class);
//触发器
CronTrigger trigger = newCronTrigger("TestJob","TestJobGroup");// 触发器名,触发器组
//触发事件设定
trigger.setCronExpression("0/3 * * * * ? ");//每3s执行一次
//将任务和触发器加入调度器,会执行execute方法
sched.scheduleJob(jobDetail, trigger);
}
}
网上找教程,大致实现了功能,触发器的时间设置详解链接为:
http://www.open-open.com/lib/view/open1392211610489.html
大致理解:格式 [秒] [分] [小时] [日] [月] [周] [年]
0/n在 分 位置表示每几分钟执行一次
0/n在 时 位置表示每几小时执行一次
其余相同,*通配符,?表示不确定