• Java任务调度框架----kunka


    初衷

    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();
    


    I am a slow walker, but I never walk backwards.



  • 相关阅读:
    307.区域与检索--数组可修改
    202.快乐数
    263.丑数
    205.同构字符串
    204.计数质数
    40.组合总和Ⅱ
    811.子域名访问计数
    39.组合总和
    udp与tcp
    SQL复习
  • 原文地址:https://www.cnblogs.com/lknny/p/5800421.html
Copyright © 2020-2023  润新知