`
vitoer
  • 浏览: 6527 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转载 --请到原文查看,自用

 
阅读更多
由于项目中需要用到定时执行任务,后来查资料发现有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(); 
    } 
 
分享到:
评论

相关推荐

    WinFormWebView2-自用-个性化浏览器-桌面程序开发-程序源码

    这是集成了WebView2的内核浏览器桌面程序,类似Edge,Chrome浏览器,使用VisualStudio2019开发工具编写来的,项目正常编译可套,请放心下载。 可以看配套的指导文章:...

    平台开发-自用工具---

    在IT行业中,平台开发是一项复杂而关键的任务,它涉及到构建一个可扩展、高效且易于维护的软件基础设施。这里提到的“平台开发-自用工具---”可能是为了描述一个专为平台开发人员定制的工具集,旨在提高开发效率和...

    VS2010工作区配色方案---自用

    "VS2010工作区配色方案---自用"是一个针对Visual Studio 2010定制的个性化配色设置,旨在提供一种更加美观、舒适的编码体验。 配色方案在编程中扮演着至关重要的角色。它不仅能够减轻视觉疲劳,还能帮助开发者更好...

    opengl-自用-trackball

    在这个“opengl-自用-trackball”项目中,我们很可能是要实现一个基于OpenGL的自定义跟踪球相机控制。 在3D图形应用中,用户需要能够从不同的角度观察模型,Trackball机制提供了这样的功能。它模拟了一个悬浮在空中...

    -自用-背背单词网站-

    【标题】“-自用-背背单词网站-”揭示了这是一个个人使用的关于英语单词学习的网站项目。这个项目可能是为了提升个人英语能力,特别是词汇量,以满足求职过程中的需求,因为“求职”标签表明它与找工作相关。在求职...

    自用-kohya-ss GUI 部署及使用

    自用-kohya-ss GUI 部署及使用

    自用-ref-npr自采集数据训练流程

    自用-ref-npr自采集数据训练流程

    闲鱼购买phpStorm旗下公司软件一键雅马哈--自用版

    闲鱼购买phpStorm旗下公司软件一键雅马哈--自用版,请各位绕行。

    期末复习自用-MySQL

    期末复习自用-MySQL

    自用-docker容器操作

    自用-docker容器操作

    未闻花名皮肤模块-自用

    未闻花名皮肤模块-自用

    自用-服务器搭建sdwebui流程

    自用-服务器搭建sdwebui流程

    vscode+配置文件-自用

    vscode+配置文件-自用

    小黑自用的DLL库查看器

    小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的DLL库查看器小黑自用的...

    C++视频教程-小的甲鱼-自用

    标题中提到的"C++视频教程-小的甲鱼-自用"表明这是一个专注于C++语言的自学视频教程,由一位名叫小的甲鱼的个人制作。C++是一种广泛使用的编程语言,它继承了C语言强大的功能,并加入了面向对象的编程特性,适合进行...

    Spring 源码分析文档----自用

    ### Spring 源码分析——设计模式篇 #### 一、引言 Spring框架作为Java企业级开发领域中不可或缺的一部分,其内部集成了多种设计模式,不仅有助于提高系统的可维护性和扩展性,还能够帮助开发者更好地理解和应用...

    自用-nsvf格式数据集制作流程

    自用-nsvf格式数据集制作流程

    vgg预训练模型--自用

    在标题中提到的"vgg预训练模型--自用",意味着这个模型已经经过了大量的图像数据训练,具有对图像分类的强大能力。预训练模型对于初学者和研究人员非常有用,因为它们可以直接用于新任务的迁移学习,无需从零开始...

    opengl学习代码-自用

    - "OpenGL SuperBible"书籍:全面的OpenGL编程指南,涵盖基础到高级主题。 - Stack Overflow:解决编程问题的好去处。 6. 实践项目: 通过解压的“总包”文件,你可以找到各种示例代码,这些代码可能涵盖了基本...

    UC-DeveloperTools-Win版-msi自用分享使用

    UC-DeveloperTools-Win版-msi自用分享使用

Global site tag (gtag.js) - Google Analytics