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 ...
随机推荐
- CSS实现简易的轮播图
<html> <head> <meta charset="UTF-8"> <title></title> <sty ...
- 在Kotlin上怎样用Mockito2 mock final 类(KAD 23)
作者:Antonio Leiva 时间:Mar 2, 2017 原文链接:https://antonioleiva.com/mockito-2-kotlin/ 如我们在前面文章中谈到的,Kotlin最 ...
- CSS3 : transition 属性
CSS3的 transition 属性用于状态过度效果! 1.语法: transition: property duration timing-function delay; -moz-transit ...
- python终极篇 --- django 初识
1. 下载: 命令行: pip install django==1.11.15 pip install -i 源 django==1.11.15 pycharm settings 解释器 点+号 输入 ...
- 51单片机实现外部中断00H-FFH、000-255、0000-1023
外部中断00H-FFH #include< reg51.h> #define uint unsigned int #define uchar unsigned char sfr P0M0 ...
- 测试理论- the conten of test plan
1 testing objects 测试对象 2 testing scope 测试范围 3 testing the frame (?) 4 the environment 5 reason for t ...
- mongodb数据库操作之简单查询
1. 2. 3.修改器 默认一条一条修改 4. 5.查询 6.mysql简单操作
- 安装floodlight遇到的问题和解决
环境:ubuntu18.04 安装floodlight先前准备:java的环境,ant. sudo apt-get install build-essential defailt-jdk ant py ...
- C - 安装雷达
C - 安装雷达 Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others) Problem Descr ...
- Github & DMCA Takedown Policy
Github & DMCA Takedown Policy Digital Millennium Copyright Act 数字千年版权法案 https://help.github.com/ ...