Quartz入门实例

来源:互联网 发布:稳定的网络怎么 编辑:程序博客网 时间:2024/06/04 17:44

1.添加依赖

<dependency>      <groupId>commons-collections</groupId>      <artifactId>commons-collections</artifactId>      <version>3.2.1</version>  </dependency> <dependency>      <groupId>org.opensymphony.quartz</groupId>      <artifactId>quartz-all</artifactId>      <version>1.6.1</version>  </dependency> 

2.定义Job

       具体执行的任务类需要实现Job接口,并在其中的execute方法写需要定时执行的方法

public class MyJob implements Job{Logger logger = LoggerFactory.getLogger(MyJob.class);public void execute(JobExecutionContext arg0) throws JobExecutionException {logger.info("{} task is start", new Date());}}

3.使用SimpleTrigger作为触发器

        触发器就是用来定义任务何时执行、执行间隔、执行次数等信息的类,每个job都对应一个或者多个trigger

@Testpublic void test() throws SchedulerException, InterruptedException {JobDetail jobDetail = new JobDetail("firstJob", "myGroup", MyJob.class);SimpleTrigger trigger = new SimpleTrigger("firstJob", "myGroup");trigger.setStartTime(new Date());trigger.setRepeatInterval(2000);trigger.setRepeatCount(1);SchedulerFactory schedulerFactory = new StdSchedulerFactory();Scheduler scheduler = schedulerFactory.getScheduler();scheduler.scheduleJob(jobDetail, trigger);scheduler.start();Thread.sleep(10*1000l);}
               结果为:

[DefaultQuartzScheduler_Worker-1] INFO com.mycompany.quartz.MyJob - Sun Jun 07 15:13:57 CST 2015 task is start

[DefaultQuartzScheduler_Worker-1] INFO com.mycompany.quartz.MyJob - Sun Jun 07 15:13:59 CST 2015 task is start

              注意:其中的repeatCount是重复次数,如果只执行一次就设置为0


3.使用CronTrigger作为触发器

@Testpublic void testCron() throws SchedulerException, InterruptedException, ParseException {JobDetail jobDetail = new JobDetail("firstJob", "myGroup", MyJob.class);CronTrigger trigger = new CronTrigger("firstJob", "myGroup");trigger.setCronExpression("0/5 * * * * ? ");SchedulerFactory schedulerFactory = new StdSchedulerFactory();Scheduler scheduler = schedulerFactory.getScheduler();scheduler.scheduleJob(jobDetail, trigger);scheduler.start();Thread.sleep(10*1000l);}
            cron表达式:

           (1)*:*表示的就是所有,也就是“每”。如用在分钟字段表示每分钟

           (2)?:就是不确定,一般用在日期和星期

           (3)-:表示范围,如用在小时10-12,表示10点、11点、12点

           (4),:表示枚举,也就是说把所有可能的值列出来

           (5)/:x/y表示从x开始,每y执行一次。如0/15用在秒,表示0,15,30,45秒执行;3/15表示3,18,33,48.....执行

  


4.总结

       所有的Quartz程序偶由3部分组成

          (1)Job

                    具体执行的任务需要实现Job接口,具体的实现类是JobDetail

          (2)Trigger

                    和Job对应,指定Job的执行时间和间隔、次数等信息

          (3)Schedule

                    调度用的类,根据trigger来执行相应的job


0 0
原创粉丝点击