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();
}
} }

最新文章

  1. ArcEngine 栅格数据
  2. freemaker转word xml注意事项
  3. Android学习笔记④——页面的布局方式
  4. POJ 2253 Frogger(floyd)
  5. C 语言中的变量为什么不能以数字打头
  6. Oracle基于学习3--Oracle创建用户和授权
  7. C++构造 下一个排列 的函数
  8. 个人对现在大众对perl的偏见的一些见解
  9. CentOS7下安装python-pip
  10. 2D图形如何运动模拟出3D效果
  11. day16:内置函数二
  12. Ubuntu下math库函数编译时未定义问题的解决
  13. SKINNY加密算法详解(无代码,仅加密)
  14. mybatis 一对多的注入 指的是连表查询时候 将不同的查询结果以列表存储对象形式 注入进去 多对一指的是 查询多条结果但都是一样的 只需注入一条
  15. idea常规设置
  16. MyEclipse10安装Log4E插件
  17. Understanding Undefined Behavior
  18. CTF-安恒18年十一月月赛部分writeup
  19. Flexbox + js实现滑动拼图游戏
  20. HAL库PWM

热门文章

  1. 我所不知的JS
  2. css 文本单行显示溢出时出现省略号 多行显示溢出时出现省略号 首行缩进
  3. node.js安装后输入“node -v”提示'node' 不是内部或外部命令,也不是可运行的程序的解决方法
  4. 几个常用I/O函数用法(printf,fprintf等)
  5. 问题:Thymeleaf整合Spring Security后sec属性不起作用
  6. RHEL6查看运行级别和grub加密阻止进入单用户模式
  7. 设备树里面#address-cells 、#size-cells、reg三者的关系
  8. SpringBoot02——A Simple SpringBoot Project&Hot Deployment
  9. [每日一学]apache camel简介
  10. 安装 mysql odbc连接器