任务类

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); //必须要有public修饰的无参构造函数
public HelloJob() {
} //一个简单任务,执行的时候打印一句“Hello World! - ”
public void execute(JobExecutionContext context) throws JobExecutionException {
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.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调度器,以及如何调度要在Quartz中运行的作业。
*/
public class SimpleExample {
Logger LOG = LoggerFactory.getLogger(SimpleExample.class); public void run() throws Exception { // 初始化一个调度工厂,并实例化一个调度类
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
// 定义一个开始运行时间:下一分钟
Date runTime = evenMinuteDate(new Date()); // 定义一个Job类,命名为job1,并绑定到一个名为group1的组中
JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();
// 实例化一个触发器,命名为trigger1,并绑定到一个名为group1的组中,Job类运行开始时间为runTime(下一分钟)
Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build(); // 告诉quartz使用我们的触发器来调度任务
scheduler.scheduleJob(job, trigger);
LOG.info(job.getKey() + " will run at: " + runTime); // 启动调度器(在调度器启动之前,实际上什么都不能运行)
scheduler.start(); // 等待的时间足够长,使调度程序有机会运行完毕Job作业!
try {
Thread.sleep(65L * 1000L);
} catch (Exception e) {
}

      /**
      * 终止调度。
      * 但是如果当前仍然有任务正在运行中,则会等待该任务执行完毕再终止,期间debug信息会打印:
      * 21:48:54.965 [main] DEBUG org.quartz.simpl.SimpleThreadPool - Waiting for thread TestScheduler_Worker-1 to shut down
      */

scheduler.shutdown(true);

    }

    public static void main(String[] args) throws Exception {
SimpleExample example = new SimpleExample();
example.run();
} }

最新文章

  1. 利用beans.xml进行简单的Spring应用上下文创建与使用
  2. html5 炫酷的字幕雨
  3. UVA Open Credit System Uva 11078
  4. Firebug的下载安装
  5. Node调用C++(dll)
  6. Unity3D引擎扩展中的编辑器定制方法
  7. VC++ 浅谈VS2010中CMFCToolBar的用法
  8. MFC函数之BitBlt
  9. 跟我一起Django - 01 安装和初始化
  10. Rails学习:create操作 局部模板
  11. 欢迎大家关注我的微信公众帐号小q机器人(xiaoqrobot)(转)
  12. 使用Json实体类构建菜单数据
  13. 微信小程序基础之创建使用教程
  14. nodejs+express+mongodb写api接口的简单尝试
  15. javascript算法-单链表
  16. Java线程机制学习
  17. 外网配置花生壳动态域名解析实现外网访问本地iis及vs实时调试
  18. python 模拟普通用户和管路员登录购物系统小程序
  19. 解决win 和 ubuntu 虚拟机之间 无法 复制粘贴的问题,以及重装vmtool后,还是无法解决的办法
  20. pta 天梯地图 (Dijkstra)

热门文章

  1. 干货 | 10分钟掌握branch and cut(分支剪界)算法原理附带C++求解TSP问题代码
  2. 修改elementUI源码新增组件/修改组件
  3. dockerfile文件语法命令
  4. 范仁义html+css课程---5、列表
  5. Cesium学习笔记-工具篇20-PrimitiveTexture自定义渲染-贴图【转】
  6. egg.js搭建 api设置跨域
  7. Nim游戏博弈(收集完全版)
  8. winrunner 测试工具
  9. Android NFC M1卡读写&芯片卡读写(CPU卡读写)(RFID读写)
  10. 安装Nvidia显卡驱动、CUDA和cuDNN的方法(jsxyhelu整编)