第一个最简单的demo:
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
public class quartzClass {
public static void main(String[] args)throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduler.shutdown(true);
}
}
其中
StdSchedulerFactory.getDefaultScheduler()方法会去读取classpath下的quartz.properties并加载,构建出一个Scheduler来
scheduler.start 和scheduler.shutdown分别表示scheduler的开始和结束。
第二个较为简单的例子,使用SimpleTrigger,在某一时间触发某个行为:
quartClass.java:
public class quartzClass {
public static void main(String[] args) throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
Date rundate = new Date();
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("Job1", "group1").build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("Trigger1", "gourp1").startAt(rundate).build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
try {
Thread.sleep(60L * 1000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
scheduler.shutdown(true);
}
}
MyJob.java:
public class MyJob implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("startTime:"+new Date());
}
}
quartz.properties:
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.scheduler.instanceName = MyScheduler
1.JobBuilder.newJob(MyJob.class).withIdentity("Job1", "group1").build();
创建一个新的MyJob类的实例,任务名为Job1,组名为gourp1
2.TriggerBuilder.newTrigger().withIdentity("Trigger1", "gourp1").startAt(rundate).build();
创建一个触发器Trigger,触发器的开始时间为rundate
3.scheduler.scheduleJob(job, trigger);
将任务和触发器都放进调度器中。准备执行
4.scheduler.start();
执行调度,每当满足时间条件时,都会自动执行一次job中的execute方法
5.Thread.sleep(60L*1000L);
进程进入睡眠状态,在此期间可以正常的执行调度,但是如果进程重新唤醒了而调度任务还未执行完,则会放弃调度任务。也就是说sleep()中的时间就是这个scheduler的生命期限。
6.scheduler.shutdown(true);
完成调度并关闭。