一. 业务需求:

实际工作中我们一般会遇到这种需求: 使用Ajax技术每隔几秒从缓存或数据库中读取一些数据, 然后再显示在页面上, 眼下有一个比較好的定时调度框架: quartz能够满足我们的需求.

二. 核心类:

Job: 一个接口, 它里面仅仅有一个方法void execute()。我们须要运行任务就须要实现这个接口,在execute中实现我们要做的事情。

JobDetail: 在Quartz每次执行Job时,都须要创建一个Job实例,所以它直接接受一个实现类以便执行时实例化,还须要一个描写叙述信息,

JobDetail就是做这个事情。

Trigger: 是一个抽象类,描写叙述触发运行的时间。它主要有SimpleTrigger和CronTrigger这两个子类,当仅需触发一次或者以固定时间间隔周期运行。SimpleTrigger是最适合的选择;而CronTrigger则能够通过Cron表达式定义出各种复杂时间规则的调度方案:如每早晨9:00运行,周一、周三、周五下午5:00运行等。

Scheduler: 能够觉得是quartz的调度器,我们把JobDetail和Trigger注冊到Scheduler。由它调度执行。

三. 简单样例:

1. 所需jar包:

2. MyJob.java

/**
* 创建一个MyJob类, 实现Job接口, 为省事測试方法也写在这个类中
*/
public class MyJob implements Job{ // 測试方法
public static void main(String[] args) {
Scheduler scheduler = null;
try {
// 创建一个JobDetail实例
JobBuilder jobBuilder = JobBuilder.newJob(MyJob.class);
jobBuilder.withDescription(" read data from DB.");
JobDetail jobDetail = jobBuilder.build(); // 创建一个调度规则, 每3s执行一次
SimpleScheduleBuilder simpleBuilder = SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(3).repeatForever();
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(simpleBuilder).startNow().build(); // 从工厂中获取一个调度器Scheduler
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.getScheduler(); // 注冊jobDetail, trigger到调度器Scheduler
scheduler.scheduleJob(jobDetail, trigger); // 開始执行Job
scheduler.start();
} catch (Exception e1) {
try {
// 出异常了, 停止执行Job
scheduler.shutdown();
} catch (SchedulerException e2) {
e2.printStackTrace();
}
e1.printStackTrace();
}
} @Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
String description = jobExecutionContext.getJobDetail().getDescription();
System.out.println("定时Job開始执行: " + description);
}
}

quartz实现定时任务调度的更多相关文章

  1. Hosted Services+Quartz实现定时任务调度

    背景 之前.net core使用quartz.net时,总感觉非常变扭,百度和谷歌了N久都没解决以下问题,造成代码丑陋,非常不优雅: 1.项目启动时,要立刻恢复执行quartz.net中的任务 2.q ...

  2. .Net Core小技巧 - Hosted Services + Quartz实现定时任务调度

    背景 之前一直有朋友问,.Net Core + Linux环境有没有类似Windows服务的东西.其实是有的,我了解的方法有两种: #1 创建一个ASP.Net Core的Web项目(如Web API ...

  3. 用abp vNext快速开发Quartz.NET定时任务管理界面

    今天这篇文章我将通过实例代码带着大家一步一步通过abp vNext这个asp.net core的快速开发框架来进行Quartz.net定时任务调度的管理界面的开发.大伙最好跟着一起敲一下代码,当然源码 ...

  4. 一文揭秘定时任务调度框架quartz

    之前写过quartz或者引用过quartz的一些文章,有很多人给我发消息问quartz的相关问题, quartz 报错:java.lang.classNotFoundException quartz源 ...

  5. 项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出

    1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法   Shiro框架内部整合好缓存管理器, ...

  6. Window服务基于Quartz.Net组件实现定时任务调度(二)

    前言: 在上一章中,我们通过利用控制台实现定时任务调度,已经大致了解了如何基于Quartz.Net组件实现任务,至少包括三部分:job(作业),trigger(触发器),scheduler(调度器). ...

  7. C#/.NET/.NET Core定时任务调度的方法或者组件有哪些--Timer,FluentScheduler,TaskScheduler,Gofer.NET,Coravel,Quartz.NET还是Hangfire?

    原文由Rector首发于 码友网 之 <C#/.NET/.NET Core应用程序编程中实现定时任务调度的方法或者组件有哪些,Timer,FluentScheduler,TaskSchedule ...

  8. quartz 定时任务调度管理器

    本项目使用的是spring-quartz 以下配置可以开启多个已知定时任务 <?xml version="1.0" encoding="UTF-8"?&g ...

  9. [源码分析] 定时任务调度框架 Quartz 之 故障切换

    [源码分析] 定时任务调度框架 Quartz 之 故障切换 目录 [源码分析] 定时任务调度框架 Quartz 之 故障切换 0x00 摘要 0x01 基础概念 1.1 分布式 1.1.1 功能方面 ...

随机推荐

  1. go test

    testing 是go中自动测试的包, 直接import就可以使用, 使用时需要注意以下规范 执行测试函数的文件必须以 _test.go 结尾, 注意下划线 单元测试函数名必须以 Test 开头, 并 ...

  2. OPC Server开发的几大境界

    OPC server的开发相对OPC client 更加困难,OPC server 的开发主要应用COM技术,主要应用书籍为潘爱民写的<COM入门和应用>,大量的技术有很大的可重用性,在开 ...

  3. 成为Java高手的25个学习目标

    本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助.对比一下自己,你已经掌握了这25条中的多少 条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(G ...

  4. Objective-C中的hasPrefix

    Objective-C中的hasPrefix hasPrefix:方法的功能是判断创建的字符串内容是否以某个字符开始,其语法形式如下: -(BOOL)hasPrefix:(NSString*)aStr ...

  5. 附 Java对象内存布局

    注意:本篇博客,主要参考自<深入理解Java虚拟机(第二版)> 1.对象在内存中存储的布局分为三块 对象头 存储对象自身的运行时数据:Mark Word(在32bit和64bit虚拟机上长 ...

  6. Qt学习之对话框与主窗口的创建

    Qt中的信号与槽机制 qt中槽和普通的C++成员函数几乎是一样的--可以是虚函数,可以被重载,可以是共有的,保护的或者私有的. 槽可以和信号连接在一起,在这种情况下,每当发射这个信号的信号,就会自动调 ...

  7. Vulkan --vulkan in powervr

    zhankeng 跨平台 多线程 low cpu overhead object orientated vulkan有利于tile based的地方 明确依赖声明 细粒度同步 render passe ...

  8. Anagrams leetcode java

    题目: Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will ...

  9. Merge Two Sorted Lists leetcode java

    题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splici ...

  10. vue组件级路由钩子函数介绍,及实际应用

    正如其名,vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消. 有多种方式可以在路由导航发生时执行钩子:全局的.单个路由独享的.或者组件级的. 一.全局钩子 你可以使用 rout ...