quartz学习入门(一)

来源:互联网 发布:snmp编程 交换机 编辑:程序博客网 时间:2024/05/21 17:38


第一个最简单的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 blocke.printStackTrace();}scheduler.shutdown(true);}}

MyJob.java:

public class MyJob implements Job{@Overridepublic void execute(JobExecutionContext arg0) throws JobExecutionException {System.out.println("startTime:"+new Date());}}
quartz.properties:

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPoolorg.quartz.threadPool.threadCount = 10org.quartz.threadPool.threadPriority = 5org.quartz.jobStore.class = org.quartz.simpl.RAMJobStoreorg.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);

完成调度并关闭。

0 0
原创粉丝点击