Quartz(1):helloworld

一:相关依赖与环境

<dependencies>
        <!--核心包-->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.0</version>
        </dependency>
        <!--工具包-->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.3.0</version>
        </dependency>
        <!--log4j-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.12</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

日志文件:log4j.properties

log4j.rootLogger=debug,stdout

log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%d{yyyy-MM-dd HH/:mm/:ss}]%-5p %c(line/:%L) %x-%m%n

二.自定义Job类实现org.quartz.Job

Job:工作任务调度的接口,需要实现execute方法,在该方法中编写任务执行的业务逻辑

/**
 * 需要实现Job接口
 */
public class HelloJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime time = LocalDateTime.now();
        String localTime = df.format(time);
        System.out.println("数据库备份时间:"+localTime);
    }
}

三.编写trigger和scheduler测试

    public static void main(String[] args) throws SchedulerException {
        //调度器(Scheduler)
        //从工厂中获取
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        //任务实例(JobDetail)
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class)
                .withIdentity("job1", "group1")  //参数一:任务名称 参数二:任务组
                .build();
        //触发器(Trigger)
        SimpleTrigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .startNow()//立即启用
                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(5))  //每5秒执行一次
                .build();
        //关联触发器和任务  按照触发器的条件执行任务
        scheduler.scheduleJob(jobDetail,trigger);
        //启动
        scheduler.start();
    }

运行结果:每五秒执行一次Job

Job生命周期:从日志中可以看出,每一次调度器执行Job时,都会创建一个新的Job实例。实际上,当execute方法执行完成后,相关的Job实例会被释放,释放的Job实例被垃圾回收机制回收。

原文地址:https://www.cnblogs.com/wwjj4811/p/12623761.html

时间: 2024-10-10 07:45:38

Quartz(1):helloworld的相关文章

libevent源码分析:hello-world例子

hello-world是libevent自带的一个例子,这个例子的作用是启动后监听一个端口,对于所有通过这个端口连接上服务器的程序发送一段字符:hello-world,然后关闭连接. 1 /* 2 * gcc -g -o hello-world hello-world.c -levent_core 3 */ 4 #include <sys/socket.h> 5 #include <netinet/in.h> 6 #include <arpa/inet.h> 7 #in

迈进Java:HelloWorld

两个月的软考学习在大家的激情中开始了.第一步安排学习尚学堂马士兵老师的J2SE,目的了解Java语法,熟悉曾经学习过的知识,理解面向对象,为后面的HeadFirst开个头,一切都是为了学习,考试是学习过程中的一个小测试: 简单了解: 安装JDK,JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.安装完成后在bin文件夹中都是可执行的应用程序,编译程序的javac和运行的java都是JDK的组件: 简单的Java学习例子,在UltraEdit中编写,运行和

cocos2d-x 3.0的入门程序:helloworld

看过了这么多不同方向的应用,发现很多程序入门都是helloworldhelloworld是所有程序员的绝对初恋 先看一下程序的运行结果吧 然后就是他的工程代码 工程的目录有两个 Classes:程序中的类 AppDelegate.h/cpp:Cocos2d-x程序框架          AppMacros.h:所用到的宏,主要是设置分辩率及对应的资源目录                   HelloWorldScene.h/cpp:场景显示层 win32:WIN32程序所涉及的主函数 main

hibernate学习:HelloWorld

一:HelloWorld程序结构 2:相关源码 3:console输出 Hibernate: insert into Student (name, age) values (?, ?) 4:知识总结 本例讲的是基于xml映射方式的hibernate. 准备条件: (1)hibernate中心包,hibernate依赖包,slf4j-nop-1.5.8.jar(hibernate依赖包中有:slf4j-api-1.5.8.jar,只是日志的接口,没有实现,所以引入对应版本的实现slf4j-nop-

SpringBoot详解(一):HelloWorld

# Spring Boot详解(一):HelloWorld Spring Boot使您可以轻松创建可以运行的独立的,生产级的基于Spring的应用程序.Spring Boot的目的是为了简化Spring繁琐的配置,让spring的开发变得更加简单(划重点:更加简单了.所以不要有心理障碍).个人认为从来没有接触过spring的小白,更容易学习spring boot. ## 一.Spring Boot项目的创建 Spring Boot项目创建的方式有三种.(其中第三种方式是最简单的方式,通用与任何开

第一个C#程序:HelloWorld

嗨,大家好!在昨天的文章里我给大家详细的介绍了开发环境的搭建,今天就来说说第一个C#程序的开发.因为,当我们初学一门编程语言的时候,总是先从最简单的程序来建立成就感的.在C#编程语言里面,用命令行编程来学习语法:等语法学习好了,就用窗口界面来编写实用的应用程序了.首先呢是大家我们的集成开发工具:sharpdeveloper,然后新建一个解决方案,在这个解决方案里面建立一个项目,然后就开始编写代码,来输出:helloworld.大致的代码如下: using System; namespace My

NVIDIA Jetson TK1学习与开发(五):helloworld的C版本与C++版本

从本篇博文开始,将一一探索Jetson TK1的开发过程,那就从最简单的hello world开始吧. 本次将介绍hello world的两种写法. 1.C版本hello world 新建helloworld.c: 输入代码: 编译链接运行: 2.C++版本hello world 新建helloworld.cpp: 输入代码: 编译链接运行: 对,就是这么简单!大家都会的...

Scala:HelloWorld

代码 1 object HelloWorld { 2 def main(args: Array[String]): Unit = { 3 println("Hello world") 4 } 5 } 解说 object关键字相当于static(更确切的说法是单例模式的一种语言层面的支持),def关键字定义方法,方法参数和返回值都采用后缀形式,即:“:类型”,Unit代表void,数组的表示采用Array[T],main是特殊的入口方法. 在控制台执行“scala 对象名”,传入的参数必

SpringMVC(二):HelloWorld

准备条件: STS(集成了Spring相关工具的Eclipse) 步骤: 加入jar包. Eclipse中新建一个动态的web工程.选择Tomcat 7.0,在WebContent-->WEB-INF-->lib目录下添加以下jar包. spring-aop-4.3.3.RELEASE.jar spring-beans-4.3.3.RELEASE.jar spring-context-4.3.3.RELEASE.jar spring-core-4.3.3.RELEASE.jar spring-