zoukankan      html  css  js  c++  java
  • 任务调度框架kunka

    kunka

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

    实现细节

    1. 整个任务信息存放在内存中,效率高,对任务数目做了限制
    2. 可以为task添加监听器,当task状态变动时,触发监听器
    3. 实现了四种执行器。包括单线程执行器,并发执行器,定时执行器和多子任务执行器。
    4. 每个执行器都内置了调度器,用户只需要添加任务,自动完成任务调度
    5. 每个调度器有自己的生命周期(当前是空闲1秒),自动关闭调度器和执行器(比如线程池)

    整体架构

    示例

    //选择并发执行器,并发数10
    final Executor<Task> executor = new ConcurrentExecutor(10);
    
    //实现任务监听器
    final TaskListener listener = new TaskListener() {
            @Override
            public void onchange(TaskStatus taskStatus) {
                System.out.println("任务ID:" + taskStatus.getTaskId() + "   任务执行:" + taskStatus.getStatus() + "%");
            }
        };
    
    //添加到任务管理中
    TaskManager.getInstance().addTask(new TestTask("testTask"), executor, new TaskListener[] { listener });
    

    示例执行结果

    放入199个任务到执行器,中断4号任务,并发度10
    任务开始:

    任务结尾:

    github地址

    github.com/lknny/kunka
    代码写了很久了,一直没时间做介绍,实现起来也比较粗糙,不过细细打磨,思想上还是一个经典的调度框架。

  • 相关阅读:
    BZOJ1029:[JSOI2007]建筑抢修(贪心,堆)
    1054. [HAOI2008]移动玩具【BFS】
    1297. [SCOI2009]迷路【矩阵乘法】
    1192. [HNOI2006]鬼谷子的钱袋【进制】
    2243. [SDOI2011]染色【树链剖分】
    1051. [HAOI2006]受欢迎的牛【强连通分量】
    codevs 2074 营救 WW
    codevs 1191 数轴染色
    codevs 2855 游乐园的迷宫 bfs
    codevs 2806 红与黑
  • 原文地址:https://www.cnblogs.com/lknny/p/7464578.html
Copyright © 2011-2022 走看看