quartz入门实例

这个例子展示了如何启动和运行Quartz。它将驱动一个Job然后说“hello quartz”。


首先,创建一个HelloJob类并实现Job接口,代码如下:


package xl.insist;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloJob implements Job {

	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		System.out.println("----------------hello quartz----------------");
	}

}

然后创建SimpleExample类,代码如下:


import java.util.Calendar;
import java.util.Date;

import org.quartz.DateBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class SimpleExample {
	public static void main(String[] args) {
		//开始计时
		new Thread(new Runnable() {
			@Override
			public void run() {
				startTiming();
			}
		}).start();
		//使用quartz驱动任务
		executeTask();
	}

	private static void executeTask() {
		try {
			SchedulerFactory sf = new StdSchedulerFactory();
			Scheduler sched = sf.getScheduler();
			// define the job and tie it to our HelloJob class
			JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();
			// compute a time that is on the next round minute
			Calendar calendar = Calendar.getInstance();
			calendar.add(Calendar.SECOND, 5);
			Date triggerStartTime = DateBuilder.evenSecondDate(calendar.getTime());
			// Trigger the job to run on the next round minute
			Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(triggerStartTime).build();
			// Tell quartz to schedule the job using our trigger
			sched.scheduleJob(job, trigger);
			sched.start();
			Thread.sleep(10L * 1000L);
			sched.shutdown();
			System.out.println("End of the timer");
		} catch (SchedulerException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	private static void startTiming() {
		for (int i = 0; i < 11; i++) {
			if(i == 0) {
				System.out.println("开始计时");
			} else {
				System.out.println(i + "second");
			}
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

运行就能从控制台看到结果了。

你可能感兴趣的:(quartz)