文档章节

简单的任务调度(自整理)

SLoan_
 SLoan_
发布于 2016/09/07 08:35
字数 581
阅读 21
收藏 0

                                任务调度
                        使用 Quartz 框架实现 1.8.6 的版本 开源框架

什么是任务调度:即是某个时间点做某件时间!
核心有是什么:以时间为关注点!即在一个特定的时间点系统执行的 一个操作!
核心有什么:
    1.任务:就是需要被执行的工作内容!
        实现 Job 接口重写 execute() 方法的编写
        
    2.触发器:决定什么时候执行任务!
        创建 Trigger 类定义 Job 执行的时间触发规则, Trigger 提供了两个实现类,分别:
            ①SimpleTigger:以时间段为关注点
                每隔‘若干’秒执行一次或每指定时间段无限次执行
                
            ②CronTrigger:以指定的时间为关注点
                到达指定的时间点执行
                
    3.调度器:实现将工作任务和触发器绑定,保证任务被执行!
        创建 SchedulerFactory 对象, 并通过其 getScheduler() 方法得到 Scheduler 对象,并 通过其 scheduleJob() 方法绑定任务和触发器
        最后使用其 start()方法开启执行任务

实现方式:
参考 Demo:QuartzDemo 
    1.国际惯例先在项目中创建 lib 文件夹导入包:
        ① log4j-1.2.14.jar
        ② quartz-all-1.8.6.jar
        ③ slf4j-api-1.6.0.jar
        ④ slf4j-log4j12-1.6.0.jar
    2.创建实体类         AdviceJob ,定义属性并提供  get |set 方法
    3.创建被执行的任务类      AdviceJobQuartz ,实现 Job 接口重写 execute() 方法编写
    4.创建触发器         CronTriggerAdvice (固体时间执行) 
                          或  SimpleTriggerAdvice (时间段内执行) 具体参考项目中的实现方式
    5.直接执行!
    
触发器中定义查询,如有特殊要求:例如元旦放假那天就不用执行任务..
解决方案则是使用 Calendar 类(排除某一天)
例子:
    ① 创建任务对象
        JobDetail jobDetail = new JobDetail("jobDetailName","jobDetailGroup",AdviceJobQuartz.class);
        jobDetail.getJobDataMap().put("empName","哆啦");    
    
    ② 创建触发器
        CronTrigger cronTrigger = new CronTrigger("cronTriggerName","cronTriggerGroup","20 58 16 * * ? 2016");
    
    ③ 创建调度器    
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        
    ④ 创建 Calendar        
        AnnualCalendar cal = new AnnualCalendar();
        Calendar myCal = GregorianCalendar.getInstance();
        myCal.set(Calendar.MONTH,Calendar.JANUARY);
        myCal.set(Calendar.DATE,1);
        cla.SetDayExcluded(myCal,true); // 加入要排除的日期
        sched.addCalendar("NewYearHoliday",cal,true,true);  //用 Calendar 注册
        cronTrigger.setCalendarName("NewYearHoliday"); // 与 Trigger 关联
    
    ⑤ 绑定触发器和任务
        scheduler.scheduleJob(jobDetail, cronTrigger);
    
    ⑥ 启动任务
        scheduler.start();
        
    ⑦ 关闭任务(注意关闭前需要 Thread.sleep(10000); 暂停一秒钟,这一秒钟是被执行任务的时间      SimpleTrigger 则不需要关闭)
        scheduler.shutdown();    
    

                
                

© 著作权归作者所有

SLoan_
粉丝 11
博文 31
码字总数 45927
作品 0
广州
运维
私信 提问
车江毅/TaskManager

##分支说明## 该分支是基于BSF的基础上开发的分支。 修改内容 1)sdk以插件的形式扩展自BSF。 2)项目命名空间从Dyd.BaseService.TaskManager修改为TaskManager 3) 打包安装包,可以直接被第...

车江毅
2015/06/26
0
0
linux命令后台运行技巧整理(1)

所有内容搜集于网络,部分做了简单翻译 Linux提供了和命令,让你轻松调度正在运行的任务。 假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用,挂起这个程序,...

一点灵犀
2015/04/13
55
0
Spring定时任务的实现

Spring定时任务的几种实现 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,...

钟声已经敲响
2016/08/25
100
0
大数据:Spark Core(二)Driver上的Task的生成、分配、调度

1. 什么是Task? 在前面的章节里描述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worker上的Executor上的调度,显然这些都不是Task. Spark上的...

raintungli
2017/04/14
0
0
垂直型爬虫架构设计(3)

之前的几篇博文已经大概的说了一些垂直型爬虫的功能,现在简单的介绍一下我所用的爬虫总体框架的设计,涵盖整个爬虫的各个节点. 我所用的爬虫主要分为两个部分,也就是两个节点. 主节点与爬虫节...

CainGao
2016/02/17
729
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
10
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
9
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
7
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
10
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部