zoukankan      html  css  js  c++  java
  • 初识Quartz之第一个Quartz实例

    转:

    初识Quartz之第一个Quartz实例

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/carson0408/article/details/79868908

            根据前面的博文对Quartz的三大组件:Job、Trigger、Scheduler分别进行了介绍,本文则利用创建三大组件创建一个Quartz的实例,来了解Quartz框架的工作流程。

    1.创建项目

            首先利用eclipse建立一个Maven项目,选择图中所示的Filter选项。并继续完成命名等,创建一个项目。

            创建完成后,项目如图所示:

    2.pom文件

            根据Quartz框架所需要的jar包,将其写到pom文件中,便于统一生成,pom配置文件如下所示:

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelVersion>4.0.0</modelVersion>
    4.  
    5. <groupId>com.carson</groupId>
    6. <artifactId>FirstQuarz</artifactId>
    7. <version>0.0.1-SNAPSHOT</version>
    8. <packaging>jar</packaging>
    9.  
    10. <name>FirstQuarz</name>
    11. <url>http://maven.apache.org</url>
    12.  
    13. <properties>
    14. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    15. </properties>
    16.  
    17. <dependencies>
    18. <dependency>
    19. <groupId>junit</groupId>
    20. <artifactId>junit</artifactId>
    21. <version>3.8.1</version>
    22. <scope>test</scope>
    23. </dependency>
    24. <dependency>
    25. <groupId>org.quartz-scheduler</groupId>
    26. <artifactId>quartz</artifactId>
    27. <version>2.2.3</version>
    28. </dependency>
    29. </dependencies>
    30. </project>

    3.Job实现类

            三大组件之一就是Job组件,其中需要实现Job接口,而Job接口中只有一个execute()方法,需要实现execute()方法,具体如下所示:

    1. import java.text.SimpleDateFormat;
    2. import java.util.Date;
    3.  
    4. import org.quartz.Job;
    5. import org.quartz.JobExecutionContext;
    6. import org.quartz.JobExecutionException;
    7.  
    8. public class MyJob implements Job {
    9.  
    10. public void execute(JobExecutionContext context) throws JobExecutionException {
    11. //打印当前的执行时间,格式为yyyy-MM-dd HH:mm:ss
    12. // 编写具体的业务逻辑。
    13. Date date=new Date();
    14. SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//规范格式
    15. System.out.println("当前时间为:"+sf.format(date));
    16. System.out.println("Hello World!");
    17. }
    18.  
    19. }

    4.Scheduler类

             该类用于作任务调度的,首先将Job实现类绑定到JobDetail对象中,然后创建Trigger对象,最后创建Scheduler对象并将JobDetail对象和Trigger对象绑定到Scheduler对象中。通过以上步骤,实现调度器对Job任务的调度,并通过触发器来设置任务触发始末以及频率。

    1. import java.text.SimpleDateFormat;
    2. import java.util.Date;
    3.  
    4. import org.quartz.JobBuilder;
    5. import org.quartz.JobDetail;
    6. import org.quartz.Scheduler;
    7. import org.quartz.SchedulerException;
    8. import org.quartz.SchedulerFactory;
    9. import org.quartz.SimpleScheduleBuilder;
    10. import org.quartz.Trigger;
    11. import org.quartz.TriggerBuilder;
    12. import org.quartz.impl.StdSchedulerFactory;
    13.  
    14. public class MyScheduler {
    15. public static void main(String[] args) throws SchedulerException
    16. {
    17. //创建一个JobDetail实例,将该实例与MyJob Class绑定。
    18. JobDetail jobDetail=JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build();
    19. //创建一个Trigger实例,定义该Job立即执行,并且每隔两秒钟重复一次,
    20. Trigger trigger=TriggerBuilder
    21. .newTrigger()
    22. .withIdentity("myTrigger","group1")
    23. .startNow()
    24. .withSchedule(SimpleScheduleBuilder
    25. .simpleSchedule()
    26. .withIntervalInSeconds(5)
    27. .repeatForever())
    28. .build();
    29. SchedulerFactory sf=new StdSchedulerFactory();
    30. Scheduler scheduler=sf.getScheduler();
    31. scheduler.start();
    32. Date date=new Date();
    33. SimpleDateFormat sfd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//规范格式
    34. //System.out.println("当前时间为:"+sfd.format(date));
    35. scheduler.scheduleJob(jobDetail, trigger);
    36. }
    37. }

            最后运行程序,得到如下结果:

    1. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    2. SLF4J: Defaulting to no-operation (NOP) logger implementation
    3. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    4. 当前时间为:2018-04-09 17:04:55
    5. Hello World!
    6. 当前时间为:2018-04-09 17:04:59
    7. Hello World!
    8. 当前时间为:2018-04-09 17:05:04
    9. Hello World!
    10. 当前时间为:2018-04-09 17:05:09
    11. Hello World!
    12. 当前时间为:2018-04-09 17:05:14
    13. Hello World!
    14. 当前时间为:2018-04-09 17:05:19
    15. Hello World!
    16. 当前时间为:2018-04-09 17:05:24
    17. Hello World!
    18. 当前时间为:2018-04-09 17:05:29
    19. Hello World!
    20. 当前时间为:2018-04-09 17:05:34
    21. Hello World!
    22. 当前时间为:2018-04-09 17:05:39
    23. Hello World!
    24. 当前时间为:2018-04-09 17:05:44
    25. Hello World!
    26. 当前时间为:2018-04-09 17:05:49
    27. Hello World!
    28. 。。。。。。
            由于设置的是一直调度不停歇,所以会一直按着间隔时间段触发任务。
  • 相关阅读:
    面向对象OO第15次作业总结
    面向对象OO第9-11次作业总结
    一文讲完最基本的图算法——图的存储、遍历、最短路径、最小生成树、拓扑排序
    字符串匹配问题的KMP算法
    提问回顾与个人总结
    软工结对作业—最长单词链
    软工第1次个人作业
    软工第0次个人作业
    OO最后一次作业
    JSF生存指南P1
  • 原文地址:https://www.cnblogs.com/libin6505/p/10571570.html
Copyright © 2011-2022 走看看