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任务");
	}
}

  

posted @ 2016-03-18 15:00  FanSunny  阅读(268)  评论(0)    收藏  举报