由于项目中需要用到定时执行任务,后来查资料发现有Quartz这么一个任务调度框架,但是网上的大部分资料几乎都是之前的版本,Quartz-2.2.1好像经过了改版,与先前的版本在用法上有那么一些出入,2.2.1里面好多方法都被弃用了,然后经过一番折腾,算是会简单的使用了。下面简单的介绍一下:
官网:http://www.quartz-scheduler.org/
下载完进行解压会得到这六个jar包文件:
这里只介绍一下简单的用法:
1、Job接口:这个接口里面只定义了一个方法,excute
[java] view plain copy print?在CODE上查看代码片派生到我的代码片
void execute(JobExecutionContext context)
然后定义一个类实现该接口,就可以定义自己需要执行的任务了,JobExecutionContext类提供调度上下文的各种信息
2、JobDetail:用于描叙Job实现类及其他的一些静态信息
3、Trigger:描叙触发Job执行的时间触发规则
4、Scheduler:运行容器,使用SchedulerFactory创建Scheduler实例
示例代码:
1、新建一个TestJob类实现Job接口
[java] view plain copy print?在CODE上查看代码片派生到我的代码片
package com.quartz;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
/**
* 任务执行类 实现 Job接口
* 该接口只有一个方法
* @author feizi
* @time 2015-1-29下午4:51:00
*/
public class TestJob implements Job {
//开发者实现该接口定义需要执行的任务。JobExecutionContext类提供调度上下文的各种信息
public void execute(JobExecutionContext context) throws JobExecutionException {
//通过上下文获取
JobKey jobKey = context.getJobDetail().getKey();
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println(jobKey + "在" + df.format(new Date()) + "时,输出了:Hello World!!!");
//do more这里可以执行其他需要执行的任务
}
}
2、测试任务调度
[java] view plain copy print?在CODE上查看代码片派生到我的代码片
package com.quartz;
import java.util.Date;
import org.quartz.DateBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
/**
* 任务调度
* @author feizi
* @time 2015-1-29下午4:47:57
*/
public class QuartzDemo {
public void run() throws SchedulerException{
System.out.println("------- 初始化 ----------------------");
//通过SchedulerFactory工厂类获取Scheduler
SchedulerFactory sf = new StdSchedulerFactory();
System.out.println("------- 初始化完成 -----------");
//任务执行时间
// Date runTime = DateBuilder.evenMinuteDate(new Date());
Date runTime = DateBuilder.evenSecondDateAfterNow();
System.out.println("------- 将Job加入Scheduler中 ------");
//用于描叙Job实现类及其他的一些静态信息,构建一个作业实例
JobDetail jobDetail = JobBuilder.newJob(TestJob.class)
.withIdentity("testJob_1", "group_1")
.build();
//描叙触发Job执行的时间触发规则,Trigger实例化一个触发器
Trigger trigger = TriggerBuilder.newTrigger()//创建一个新的TriggerBuilder来规范一个触发器
.withIdentity("trigger_1", "group_1")//给触发器一个名字和组名
// .startNow()//立即执行
.startAt(runTime)//设置触发开始的时间
.withSchedule
(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)//时间间隔
.withRepeatCount(5)//重复次数(将执行6次)
)
.build();//产生触发器
//运行容器,使用SchedulerFactory创建Scheduler实例
Scheduler sched = sf.getScheduler();
//向Scheduler添加一个job和trigger
sched.scheduleJob(jobDetail, trigger);
System.out.println(jobDetail.getKey() + " 运行在: " + runTime);
sched.start();
}
/**
* 调度测试
* @param args
* @throws SchedulerException
*/
public static void main(String[] args) throws SchedulerException {
QuartzDemo demo = new QuartzDemo();
demo.run();
}
}
分享到:
相关推荐
这是集成了WebView2的内核浏览器桌面程序,类似Edge,Chrome浏览器,使用VisualStudio2019开发工具编写来的,项目正常编译可套,请放心下载。 可以看配套的指导文章:...
在IT行业中,平台开发是一项复杂而关键的任务,它涉及到构建一个可扩展、高效且易于维护的软件基础设施。这里提到的“平台开发-自用工具---”可能是为了描述一个专为平台开发人员定制的工具集,旨在提高开发效率和...
"VS2010工作区配色方案---自用"是一个针对Visual Studio 2010定制的个性化配色设置,旨在提供一种更加美观、舒适的编码体验。 配色方案在编程中扮演着至关重要的角色。它不仅能够减轻视觉疲劳,还能帮助开发者更好...
在这个“opengl-自用-trackball”项目中,我们很可能是要实现一个基于OpenGL的自定义跟踪球相机控制。 在3D图形应用中,用户需要能够从不同的角度观察模型,Trackball机制提供了这样的功能。它模拟了一个悬浮在空中...
【标题】“-自用-背背单词网站-”揭示了这是一个个人使用的关于英语单词学习的网站项目。这个项目可能是为了提升个人英语能力,特别是词汇量,以满足求职过程中的需求,因为“求职”标签表明它与找工作相关。在求职...
自用-kohya-ss GUI 部署及使用
自用-ref-npr自采集数据训练流程
闲鱼购买phpStorm旗下公司软件一键雅马哈--自用版,请各位绕行。
期末复习自用-MySQL
自用-docker容器操作
未闻花名皮肤模块-自用
自用-服务器搭建sdwebui流程
vscode+配置文件-自用
小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的...
标题中提到的"C++视频教程-小的甲鱼-自用"表明这是一个专注于C++语言的自学视频教程,由一位名叫小的甲鱼的个人制作。C++是一种广泛使用的编程语言,它继承了C语言强大的功能,并加入了面向对象的编程特性,适合进行...
### Spring 源码分析——设计模式篇 #### 一、引言 Spring框架作为Java企业级开发领域中不可或缺的一部分,其内部集成了多种设计模式,不仅有助于提高系统的可维护性和扩展性,还能够帮助开发者更好地理解和应用...
自用-nsvf格式数据集制作流程
在标题中提到的"vgg预训练模型--自用",意味着这个模型已经经过了大量的图像数据训练,具有对图像分类的强大能力。预训练模型对于初学者和研究人员非常有用,因为它们可以直接用于新任务的迁移学习,无需从零开始...
- "OpenGL SuperBible"书籍:全面的OpenGL编程指南,涵盖基础到高级主题。 - Stack Overflow:解决编程问题的好去处。 6. 实践项目: 通过解压的“总包”文件,你可以找到各种示例代码,这些代码可能涵盖了基本...
UC-DeveloperTools-Win版-msi自用分享使用