`
vitoer
  • 浏览: 6801 次
  • 性别: 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流程

    web渗透路径扫描脚本-自用轻便版.zip

    web渗透路径扫描脚本-自用轻便版Web 路径扫描用法参数说明_-u : 紧跟一个链接,可以带路径.--urllist: 跟着一个url列表文件--pathlist: 跟着字典文件路径-v: 实时显示结果信息-o: 将结果保存到文件中--thread : 指定...

    aspose-word 18.6自用

    【aspose-word 18.6自用】是一款专业用于文档处理的软件组件,由Aspose公司开发,主要用于创建、编辑、转换以及呈现各种Microsoft Word文档格式。在本版本18.6中,用户可以利用它来实现高级的文档操作功能,例如格式...

    -自用-实习工作内容-

    在实习期间,你可能会涉及到多个IT领域的任务,这些任务涵盖了软件开发的不同阶段。根据提供的文件名,我们可以推测你在实习中的工作可能围绕着教育信息化系统的开发和优化,具体涉及排课管理、用户管理以及选课流程...

    vscode+配置文件-自用

    vscode+配置文件-自用

    小黑自用的DLL库查看器

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

    自用加载软件-自用加载软件.rar

    根据提供的信息,本文将对“自用加载软件-自用加载软件.rar”压缩包进行详细分析。首先,压缩包的标题和描述都包含了“自用加载软件”,这表明软件的性质可能是个人使用,并且可能用于加载某种程序或功能。标题中的...

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

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

Global site tag (gtag.js) - Google Analytics