【Quartz】入门

定义

  Quartz是一个功能丰富的开源作业调度库,可以集成到几乎所有Java应用程序中 —— 从最小的独立应用程序到最大的电子商务系统。Quartz可以用来创建执行多个作业的简单或复杂的计划。

这里写图片描述

功能

  如果你的应用程序包含需要在特定时间执行的任务,那么Quartz可能是你最理想的解决方案。

示例

  在pom文件中引入以下依赖:

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.2.1</version>
</dependency>

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz-jobs</artifactId>
  <version>2.2.1</version>
</dependency>

  新建类:HelloQuartz

public class HelloQuartz implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("Hello Quartz !");
    }
}

  新建类:SchedulerTest

public class SchedulerTest {
    public static void main(String[] args){
        SchedulerFactory sf = new StdSchedulerFactory();
        try{
            Scheduler scheduler = sf.getScheduler();
            JobDetail jobDetail = newJob(HelloJob.class).withIdentity("job1","group1").build();
            Date runTime = evenMinuteDate(new Date());
            //使用simpleTrigger规则,每下一分钟执行一次
            Trigger trigger = 
                 newTrigger().withIdentity("trigger1","group1").startAt(runTime).build();
            //使用cornTrigger规则,每20秒执行一次
            //CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1")
            //                      .withSchedule(cronSchedule("0/20 * * * * ?")).build();
            scheduler.scheduleJob(jobDetail,trigger);
            scheduler.start();
            //程序启动90s后,结束任务调度
            Thread.sleep(90L*1000L);
            scheduler.shutdown(true);
        }catch (SchedulerException se){
            se.printStackTrace();
        }catch (InterruptedException ie){
            ie.printStackTrace();
        }
    }
}

  执行main(),会在下一分钟打印结果:Hello Quartz !

参考资料:http://www.quartz-scheduler.org/overview/

猜你喜欢

转载自blog.csdn.net/gnd15732625435/article/details/80712076