初衷

  1. 工作中用到了很多框架,但是给我印象最深的还是我们PO(Product Owner)在若干年前写的一套任务调度框架,在JDK1.4之前,concurrent包还没有引入,

    手写的这套Token调度,去年我们依然在使用,并且满足了商用软件的各种要求。
  2. 框架本身是可行的,但是也存在一些问题,比如,技术陈旧、互相引用、层次冗杂、不易读等。
  3. 前车之鉴,并且结合我涉及的另外一套内部框架(读写框架),我想重新设计并实现一套新的任务调度框架。
  4. 取名为kunka,纯属雷同,并且i really have fun to do this.

概念

  1. Task,任务,最小调度和执行单位,执行内容,用户自定义
  2. Executor,执行器,执行Task,根据执行方式分为,串行执行器,并发执行器,定时执行器,多子任务执行器等
  3. Dispather,调度器,负责调度,将Task放放入Executor,有自己的生命周期
  4. TaskManager, 任务管理中心,单例,负责管理所以进入待调度的Task,并管理任务状态,并提供任务中断接口
  5. TaskListener,任务监听器,Task状态变动时,会通知监听器

框架调度流程

  1. 用户实现一个Task,并实现对任务状态变更的TaskListener,其中ID要对应
  2. 用户根据需要,选择一种执行器Executor
  3. 用户将Task、TaskListener和Executor放入到TaskManager中
  4. 调度器开始运作,执行器接受到调度器分发的Task,并执行
  5. Task状态变更时,通知所有注册的TaskListener
  6. 调度器会在生命周期结束时,自动关闭,同时关闭相关的执行器

接口说明

Task
    /**
* 任务执行内容
*/
abstract public void runTask(); /**
* 任务超时处理
*/
abstract public void timeOutAction(); /**
* 任务结束时,后置处理
*/
abstract public void taskFinished();

Java任务调度框架----kunka的更多相关文章

  1. Java任务调度框架之分布式调度框架XXL-Job介绍

    ​ Java任务调度框架之分布式调度框架XXL-Job介绍及快速入门 调度器使用场景: Java开发中经常会使用到定时任务:比如每月1号凌晨生成上个月的账单.比如每天凌晨1点对上一天的数据进行对账操作 ...

  2. Java任务调度框架Quartz入门

    Quartz[kwɔːts]:石英,其框架和名字一样简单朴素又不失魅力,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框 ...

  3. 任务调度框架kunka

    kunka kunka是一个任务调度框架.用户只需要在Task接口中实现自己要执行的功能,并且选择合适的执行器,放入TaskManager中,就可以了完成整个任务了. 实现细节 整个任务信息存放在内存 ...

  4. Java任务调度框架Quartz

    转自:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471  介绍  Quartz is a full-featured, open ...

  5. Java任务调度框架Quartz教程实例

    介绍: Quartz框架是一个全功能.开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统.Quartz可以执行上千上万的任务调度.   核心概念   Quar ...

  6. Java任务调度框架Quartz教程

    一.什么是quartz作业调度? Quartz框架是一个全功能.开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统.Quartz可以执行上千上万的任务调度. ...

  7. (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail

    http://blog.csdn.net/zixiao217/article/details/53053598 首先给一个简明扼要的理解: Scheduler 调度程序-任务执行计划表,只有安排进执行 ...

  8. java任务调度框架

    https://www.ibm.com/developerworks/cn/java/j-lo-taskschedule/

  9. (转)Java任务调度框架Quartz入门教程指南(四)Quartz任务调度框架之触发器精讲SimpleTrigger和CronTrigger、最详细的Cron表达式范例

    http://blog.csdn.net/zixiao217/article/details/53075009 Quartz的主要接口类是Schedule.Job.Trigger,而触发器Trigge ...

随机推荐

  1. webpack实践总结

    一.Loader写法及执行顺序 从webpack2起,loader的格式如下: module: { rules: [ {test: /\.css$/, use: ['style-loader','cs ...

  2. 「日常训练」Mike and Feet(Codeforces Round #305 Div. 2 D)

    题意 (Codeforces 548D) 对一个有$n$个数的数列,我们要求其连续$x(1\le x\le n)$(对于每个$x$,这样的连续group有若干个)的最小数的最大值. 分析 这是一道用了 ...

  3. 用node是踩过的一些坑

    1.http.request抓取数据时,response的“data”回调事件返回的数据不完整 问题原因:因为“data"事件返回是chunk,就是说是一块块连续的数据 解决的办法:在”da ...

  4. JAVA集合面面观

    List的常用实现:vector,ArrayList,linkedList. 总体关系如下(java8): vector和arraylist 两者底层都是采用数组的形式.但是有些许不同 // Arra ...

  5. Visual Studio 2005安装包

    点击下载

  6. 利用java中的BigInteger实现进制转换

    [原创] java中的进制BigInteger十分的强大,而且好用,他可以表示任意大的整数,同时还可以进行进制转换,十分的方便, 代码示例: package com.jiajia.demo_1; im ...

  7. Packet filtering with Linux & NAT

    http://www.linuxfocus.org/ChineseGB/May2003/article289.shtml Gateway, Proxy-Arp 和 Ethernet Bridge ? ...

  8. [Java文件操作] 将素数输出到文件

    [要求]编写程序求出10万以内的所有素数,并将这些素数输出到一个文本文件中,每行文本只包含一个素数数据. import java.util.*; import java.io.*; public cl ...

  9. 安装与配置JDK

    第一步:下载jdk-7-linux-i586.tar.gzwget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586. ...

  10. doget,doPost在底层走的是service

    doget,doPost在底层走的是service 因为在源码上 先执行service方法 然后再调用doget,doPost方法