Java任务调度框架----kunka
初衷
- 工作中用到了很多框架,但是给我印象最深的还是我们PO(Product Owner)在若干年前写的一套任务调度框架,在JDK1.4之前,concurrent包还没有引入,
手写的这套Token调度,去年我们依然在使用,并且满足了商用软件的各种要求。 - 框架本身是可行的,但是也存在一些问题,比如,技术陈旧、互相引用、层次冗杂、不易读等。
- 前车之鉴,并且结合我涉及的另外一套内部框架(读写框架),我想重新设计并实现一套新的任务调度框架。
- 取名为kunka,纯属雷同,并且i really have fun to do this.
概念
- Task,任务,最小调度和执行单位,执行内容,用户自定义
- Executor,执行器,执行Task,根据执行方式分为,串行执行器,并发执行器,定时执行器,多子任务执行器等
- Dispather,调度器,负责调度,将Task放放入Executor,有自己的生命周期
- TaskManager, 任务管理中心,单例,负责管理所以进入待调度的Task,并管理任务状态,并提供任务中断接口
- TaskListener,任务监听器,Task状态变动时,会通知监听器
框架调度流程
- 用户实现一个Task,并实现对任务状态变更的TaskListener,其中ID要对应
- 用户根据需要,选择一种执行器Executor
- 用户将Task、TaskListener和Executor放入到TaskManager中
- 调度器开始运作,执行器接受到调度器分发的Task,并执行
- Task状态变更时,通知所有注册的TaskListener
- 调度器会在生命周期结束时,自动关闭,同时关闭相关的执行器
接口说明
Task
/**
* 任务执行内容
*/
abstract public void runTask();
/**
* 任务超时处理
*/
abstract public void timeOutAction();
/**
* 任务结束时,后置处理
*/
abstract public void taskFinished();
Java任务调度框架----kunka的更多相关文章
- Java任务调度框架之分布式调度框架XXL-Job介绍
Java任务调度框架之分布式调度框架XXL-Job介绍及快速入门 调度器使用场景: Java开发中经常会使用到定时任务:比如每月1号凌晨生成上个月的账单.比如每天凌晨1点对上一天的数据进行对账操作 ...
- Java任务调度框架Quartz入门
Quartz[kwɔːts]:石英,其框架和名字一样简单朴素又不失魅力,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框 ...
- 任务调度框架kunka
kunka kunka是一个任务调度框架.用户只需要在Task接口中实现自己要执行的功能,并且选择合适的执行器,放入TaskManager中,就可以了完成整个任务了. 实现细节 整个任务信息存放在内存 ...
- Java任务调度框架Quartz
转自:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471 介绍 Quartz is a full-featured, open ...
- Java任务调度框架Quartz教程实例
介绍: Quartz框架是一个全功能.开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统.Quartz可以执行上千上万的任务调度. 核心概念 Quar ...
- Java任务调度框架Quartz教程
一.什么是quartz作业调度? Quartz框架是一个全功能.开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统.Quartz可以执行上千上万的任务调度. ...
- (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail
http://blog.csdn.net/zixiao217/article/details/53053598 首先给一个简明扼要的理解: Scheduler 调度程序-任务执行计划表,只有安排进执行 ...
- java任务调度框架
https://www.ibm.com/developerworks/cn/java/j-lo-taskschedule/
- (转)Java任务调度框架Quartz入门教程指南(四)Quartz任务调度框架之触发器精讲SimpleTrigger和CronTrigger、最详细的Cron表达式范例
http://blog.csdn.net/zixiao217/article/details/53075009 Quartz的主要接口类是Schedule.Job.Trigger,而触发器Trigge ...
随机推荐
- 使用Cydia Substrate Hook Android Java世界
从来没接触过Android的HOOK,在看雪上找到了一篇HOOK 的文章,但是太复杂了,应该是本地环境问题,测试不成功. 后来搜到Cydia Substrate,看了几篇文章,进入官网查看了一下文档, ...
- 关于python的闭包与装饰器的实验
首先看闭包,在嵌套函数内添加返回值,可以通过外部函数读取内部函数信息 #encoding=utf-8 #闭包应用 #先定义闭包函数,并使用 def outer(func): def inner(): ...
- 让PC版网站在移动端原样式显示
一般PC网站在移动端显示效果往往和PC版原样式不同,为了在移动端下还原原PC站样式,可以采用以下方式解决: 1) 去掉页头的: <meta name="viewport" c ...
- LeetCode 389——找不同
1. 题目 2. 解答 2.1. 方法一 将 s 和 t 转化为 Python 的列表,然后遍历列表 s 的元素,将它们从列表 t 中删除,最后列表 t 中会余下一个元素,即为所求. class So ...
- nonebot 源码阅读笔记
前言 nonebot 是一个 QQ 消息机器人框架,它的一些实现机制,值得参考. nonebot NoneBot 初始化(配置加载) 阅读 nonebot 文档,第一个示例如下: import non ...
- 爬虫:Scrapy17 - Common Practices
在脚本中运行 Scrapy 除了常用的 scrapy crawl 来启动 Scrapy,也可以使用 API 在脚本中启动 Scrapy. 需要注意的是,Scrapy 是在 Twisted 异步网络库上 ...
- 【SSH】——梳理三大框架
[前言] 去年软考,从System.out.println("Hello World!")开始,小编也算是进入java的世界了.转战java以后,虽然仍旧在学习.NET的知识,但越 ...
- mysqli DB封装
<?php class DB { //私有的属性 private static $dbcon = false; private $host; private $port; private $us ...
- 做一个iframe的弹出框
群里有个人想在微信页面里面加弹出框.作为前端的我,想着不可能这样做.后来一个人说了: A:如果对方没有防盗链的话,你可以建个页面,内置iframe 到他的页面,然后把url 的参数也传入你的ifram ...
- 利用FFT来进行字符串匹配
给定串A和串B,A由26个小写字母构成,B由?和26个小写字母构成 ?可以和任意字符匹配 求A中出现了多少次B 这里可以使用fft做法,定义向量A和向量B 然后求A和rev(B)的卷积结果C C的第i ...