Quartz任务调度,SimpleTrigger触发器的DemoTwo
1、job任务
package com.fdx.testTwo;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* 任务类,用于触发的任务,要定时执行的内容
* @author Administrator
*
*/
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
//job任务的名字
String jobName = context.getJobDetail().getKey().getName();
//执行的时间
SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日hh小时mm分钟ss秒");
String runTime = sf.format(new Date());
System.out.println("任务:"+jobName+"在时间:"+runTime+"被执行");
}
}
2、SimpleTrigger调度类
package com.fdx.testTwo;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.DateBuilder;
import org.quartz.DateBuilder.IntervalUnit;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.ScheduleBuilder;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SchedulerMetaData;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class SimpleTriggerTest {
public static void main(String[] args) throws SchedulerException {
SimpleTriggerTest stt = new SimpleTriggerTest();
stt.run();
}
//调度器的一个方法
public void run() throws SchedulerException{
SimpleDateFormat sdateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
//初始化调度器
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
//触发开始时间,下一个10秒
Date runTime = DateBuilder.nextGivenSecondDate(null, 10);
//任务1
JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();
SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();
//将任务1、触发器放在调度器
Date date = scheduler.scheduleJob(job, trigger);
System.out.println(job.getKey().getName()+"任务将在:"+sdateFormat.format(date)+"运行,并且重复"+trigger.getRepeatCount()+"次,每次间隔"+trigger.getRepeatInterval()/1000+"秒");
//任务2
job = JobBuilder.newJob(HelloJob.class).withIdentity("job2", "group1").build();
trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("trigger2", "group1").startAt(runTime).build();
date = scheduler.scheduleJob(job, trigger);
System.out.println(job.getKey().getName()+"任务将在"+sdateFormat.format(date)+"运行,并且重复"+trigger.getRepeatCount()+"次,每次间隔"+trigger.getRepeatInterval()/1000+"秒");
// //任务3
// job =JobBuilder.newJob(HelloJob.class).withIdentity("job3", "group1").build();
// trigger = TriggerBuilder.newTrigger().withIdentity("trigger3", "group1")
// .startAt(runTime).withSchedule(
// SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10)//重复间隔
// .withRepeatCount(10))//重复次数
// .build();
// date = scheduler.scheduleJob(job, trigger);
// System.out.println(job.getKey().getName()+"任务,在"+sdateFormat.format(date)+"运行,并且重复"+trigger.getRepeatCount()+"次,每次间隔"+trigger.getRepeatInterval()/1000+"秒");
//启动调度器,
scheduler.start();
System.out.println("-------------------启动调度,.start()------------,所有任务都将被启动");
System.out.println("------------------系统启动的时间-------"+sdateFormat.format(new Date())+"----------------------");
System.out.println("-----------等待20秒,-------");
try {
Thread.sleep(20*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
scheduler.shutdown(true);
System.out.println("------- 调度已关闭 ---------------------");
SchedulerMetaData metaData = scheduler.getMetaData();
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~执行了"+metaData.getNumberOfJobsExecuted()+"个jobs任务");
}
}
本人目前处于学习阶段,各位大神多多提宝贵的建议!

浙公网安备 33010602011771号