你的第一个Quartz程序
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程序的更多相关文章
- 第一个Quartz程序 (二)
1 我们使用maven项目 2 创建一个job类,在execute()方法里写上业务逻辑代码. 3 在另外一个类中创建触发器,调度器,并且绑定job. 首先在项目的pom.xml引入需要的jar包. ...
- quartz2.3.0(一)您的第一个Quartz程序
任务类 package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org ...
- 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】
Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...
- 初识Quartz之第一个Quartz实例
转: 初识Quartz之第一个Quartz实例 2018年04月09日 17:07:31 carson0408 阅读数:366 版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...
- DirectX游戏编程(一):创建一个Direct3D程序
一.环境 Visual Studio 2012,DirectX SDK (June 2010) 二.准备 1.环境变量(如没有配置请添加) 变量名:DXSDK_DIR 变量值:D:\Software\ ...
- 第一个python程序
一个python程序的两种执行方式: 1.第一种方式是通过python解释器: cmd->python->进入python解释器->编写python代码->回车. 2.第二种方 ...
- 编写第一个MapReduce程序—— 统计气温
摘要:hadoop安装完成后,像学习其他语言一样,要开始写一个“hello world!” ,看了一些学习资料,模仿写了个程序.对于一个C#程序员来说,写个java程序,并调用hadoop的包,并跑在 ...
- 1.3 第一个C#程序
几乎没一门编程语言的第一个程序都叫“你好,世界”,所以先在visual studio 中创建一个Helloworld程序. 各部分的详细内容: Main方法是程序运行的起点,最重要的代码就写在Main ...
- 一个.net程序员的安卓之旅-Eclipse设置代码智能提示功能
一个.net程序员的安卓之旅-代码智能提示功能 过完年回来就决心开始学安卓开发,就网上买了个内存条加在笔记本上(因为笔记本原来2G内存太卡了,装了vs2010.SQL Server 2008.orac ...
随机推荐
- Qualcomm_Mobile_OpenCL.pdf 翻译-6-工作组尺寸的性能优化
对于许多kernels来说,工作组大小的调整会是一种简单有效的方法.这章将会介绍基于工作组大小的基础知识,比如如何获取工作组大小,为什么工作组大小非常重要,同时也会讨论关于最优工作组大小的选择和调整的 ...
- AUC计算方法
本质是ROC曲线下的面积,ROC曲线x轴是误判率/误报率(false positive rate),y轴是准确率/命中率(true positive rate). AUC是ROC曲线与横轴所围的面积. ...
- imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable
错误: imagecreatefromstring(): Empty string or invalid image 或者 imagesx() expects parameter 1 to be re ...
- jmeter上传文件tips
转载:https://blog.csdn.net/aduocd/article/details/87916676 转载:https://www.cnblogs.com/landhu/p/8980195 ...
- mapper映射文件配置之insert、update、delete(转载)
原文地址:http://www.cnblogs.com/dongying/p/4048828.html 在mapper文件中,以mapper作为根节点,其下面可以配置的元素节点有: select, i ...
- mybatis javabean字段与数据库字段的映射
结论:未作映射的字段没有值,但是数据库中实际是有值的,说明如果带下划线的字段未作映射,返回值是不会有值的,只有映射了的字段以及不带下划线的字段(默认映射)才有返回值 1.bean属性 public c ...
- 常用命令之------ln
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的 ...
- 【转】h5页面audio不自动播放问题
1.audio:html5音频标签 <audio loop src="/photo/aa.mp3" id="audio" autoplay preload ...
- 【shell】awk格式对齐文本
源: 218.104.69.100 218.104.69.100 安徽合肥 218.104.69.99 218.104.69.99 安徽合肥 61.190.72.38 61.190.72.38 安徽合 ...
- 【ipc-mq】根据mq的key查看使用进程
使用ipcs -q可以得到key与msqid的对应关系,从而找到msgid webadmin@172.172.179.3:/usr/local/webapps/test_ma[17:17:36]$ i ...