package org.quartz.examples.example1;

 import java.util.Date;

 import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; /**
* 一个向问候世界的简单job 实现的是Job接口
*/
public class HelloJob implements Job { private static Logger _log = LoggerFactory.getLogger(HelloJob.class); /**
* Quartz需要一个空参构造方法以便在需要的时候对其实例化.
*/
public HelloJob() {
} /**
* 当org.quartz.Trigger对关联的Job点火的时候, org.quartz.Scheduler会调用这个方法.
* 这就是说我们在调度的时候, 时机一到我们其实是执行HelloJob中的方法.
*/
public void execute(JobExecutionContext context) throws JobExecutionException { // Say Hello to the World and display the date/time
_log.info("Hello World! - " + new Date());
} }
 package org.quartz.examples.example1;

 import static org.quartz.DateBuilder.evenMinuteDate;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger; import org.junit.Test;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.util.Date; /**
* 这个实例演示了如何启动和关闭Quartz的调度器. 以及调度器是如何调度任务的.
*/
public class SimpleExample { public void run() throws Exception { // 看看别人从不用System.out.println()
Logger log = LoggerFactory.getLogger(SimpleExample.class); log.info("------- Initializing ----------------------"); // 首先必须获得一个调度器的引用, 这里傻子都知道是工厂模式, 目前不知道是哪种
// 看起来像抽象工厂
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler(); log.info("------- Initialization Complete -----------"); // 计算下一个整数分钟的时间
Date runTime = evenMinuteDate(new Date());
log.info("现在的时间是:" + new Date());
log.info("rumTime计算出来的时间是:" + runTime); log.info("------- Scheduling Job -------------------"); // 定义任务并将其绑定到我们的HelloJob类上, 任务详情
JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build(); // 在下一轮的时候触发我们的任务, 触发器, 从runTime开始
Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build(); // 告诉quartz使用我们的触发器来调度任务
sched.scheduleJob(job, trigger);
log.info(job.getKey() + " will run at: " + runTime); // 启动调度器(如果不启动调度器的话什么都不会发生)
sched.start(); log.info("------- Started Scheduler -----------------"); // 等待足够长的时间以便调度器来调度任务执行
log.info("------- Waiting 65 seconds... -------------");
try {
// 等待65秒
Thread.sleep(65L * 1000L);
// 执行中......
} catch (Exception e) {
//
} // 关闭调度器
log.info("------- Shutting Down ---------------------");
sched.shutdown(true);
log.info("------- Shutdown Complete -----------------");
} @Test
public void test1() { SimpleExample example = new SimpleExample();
try {
example.run();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

你的第一个Quartz程序的更多相关文章

  1. 第一个Quartz程序 (二)

    1 我们使用maven项目 2 创建一个job类,在execute()方法里写上业务逻辑代码. 3 在另外一个类中创建触发器,调度器,并且绑定job. 首先在项目的pom.xml引入需要的jar包. ...

  2. quartz2.3.0(一)您的第一个Quartz程序

    任务类 package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org ...

  3. 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】

    Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...

  4. 初识Quartz之第一个Quartz实例

    转: 初识Quartz之第一个Quartz实例 2018年04月09日 17:07:31 carson0408 阅读数:366   版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...

  5. DirectX游戏编程(一):创建一个Direct3D程序

    一.环境 Visual Studio 2012,DirectX SDK (June 2010) 二.准备 1.环境变量(如没有配置请添加) 变量名:DXSDK_DIR 变量值:D:\Software\ ...

  6. 第一个python程序

    一个python程序的两种执行方式: 1.第一种方式是通过python解释器: cmd->python->进入python解释器->编写python代码->回车. 2.第二种方 ...

  7. 编写第一个MapReduce程序—— 统计气温

    摘要:hadoop安装完成后,像学习其他语言一样,要开始写一个“hello world!” ,看了一些学习资料,模仿写了个程序.对于一个C#程序员来说,写个java程序,并调用hadoop的包,并跑在 ...

  8. 1.3 第一个C#程序

    几乎没一门编程语言的第一个程序都叫“你好,世界”,所以先在visual studio 中创建一个Helloworld程序. 各部分的详细内容: Main方法是程序运行的起点,最重要的代码就写在Main ...

  9. 一个.net程序员的安卓之旅-Eclipse设置代码智能提示功能

    一个.net程序员的安卓之旅-代码智能提示功能 过完年回来就决心开始学安卓开发,就网上买了个内存条加在笔记本上(因为笔记本原来2G内存太卡了,装了vs2010.SQL Server 2008.orac ...

随机推荐

  1. springboot(十五)-Runner启动器

    Runner启动器 如果你想在Spring Boot启动的时候运行一些特定的代码,你可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,它们都 ...

  2. python内置下载服务器

    python内置了一个下载服务器.例如你的同事要让你传的文件位于某一个目录下面,那么你可以进入这个目录,然后执行下面的命令启动一个下载服务器 python2 python -m SimpleHTTPS ...

  3. api接口统一封装

    具体的接口api模块,例如authorization.js import axios from '../axiosWrapper' let prefix = process.env.API_ROOT ...

  4. Python回调函数用法实例

    Python回调函数用法实例 作者:no.body链接:https://www.zhihu.com/question/19801131/answer/27459821 什么是回调函数? 我们绕点远路来 ...

  5. Win7安装Visual Studio 2019闪退问题

    最近在Win7 系统上安装最新版的VS2019发现 每次在这个画面之后就闪退了,即便换了台电脑也是一样的情况,于是我意识到,这应该是系统本身的问题 经过调查发现是只需要安装两个更新就可以了 这两个更新 ...

  6. mariadb读写分离

    mycat maraidb主从架构,是主负责写,从负责读,但前端如果没有调度器的话,是无法实现读写分离的.这就涉及到了中间站,它就是mycat.一定要在主从架构的基础之上实现读写分离. 配置三台的主从 ...

  7. java数据结构复习01

    1.数组 package javaDataStruct.array01; public class MyArray { private int[] arr; // 表示有效数据的长度 private ...

  8. Android开发艺术探索笔记之Activity

    内容来源:Android开发艺术探索第一章:Activity的生命周期与启动模式 不能在onPause中做重量级的操作,因为必须执行完成以后新Activity才能Resume.onPause和onSt ...

  9. 关于FTP和SFTP的操作总结

    SFTP使用的三方类库是Renci.SshNet.DLL SFTP连接大部分网上使用IP地址形式的路径,而我本次使用的是网站形式的.类似sftp.XXX.com SFTP的操作也类似File文件的操作 ...

  10. 配置文件加载位置与多profile文件

    一. 我们在编写配置文件时,文件名可以是: application-{profile}.properties 例如:我们有几个配置文件对应的是项目不同时期的配置文件 1.application-sit ...