任务调度框架kunka
发布日期:2021-10-25 12:04:15 浏览次数:5 分类:技术文章

本文共 868 字,大约阅读时间需要 2 分钟。

kunka

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

实现细节

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

整体架构

575312-20170901181842499-2055519124.png

示例

//选择并发执行器,并发数10final Executor
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

任务开始:
575312-20170901183109171-1662870228.png
任务结尾:
575312-20170901183157608-915053309.png

github地址

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

转载于:https://www.cnblogs.com/lknny/p/7464578.html

转载地址:https://blog.csdn.net/weixin_30908103/article/details/99407939 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:[网络收集]使用PostBackUrl属性实现跨页面传值
下一篇:PHP错误日志相关

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月18日 01时52分52秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Hibernate多对多的关系映射,详解(代码+图解)与应用 举个栗子,搞的清楚 2019-04-26
Hibernate的查询方式(大全)(检索方式)OID查询+ HQL检索 +QBC检索+SQL检索 2019-04-26
Hibernate环境搭建 2019-04-26
Hibernate的抓取策略---Hibernate查询方式的优化 延迟加载 + 抓取策略 2019-04-26
C语言算法题,统计个年龄段的人数0~9,10~19.。。。。分别放置到数组b[0],b[1]......... 2019-04-26
Struts2快速入门,超简单详细的快速入门教程 2019-04-26
Java 冒泡排序详解,一分钟理解冒泡排序 2019-04-26
Struts2的执行流程 2019-04-26
Struts2的常见配置,配置XML的提示,Struts2的配置文件,package 的配置,Action的配置,常量的配置,Struts2的分模块开发的配置 2019-04-26
C语言算法,图解+详解 统计输入字符串当中要查找字符串的数量,substr所指的子符串在str所指的字符串中出现的次数。 2019-04-26
Java 当中 通过Date获取时间和通过SimpleDateFormat格式化时间 2019-04-26
Struts的数据的封装,属性驱动:提供属性set方法的方式,属性驱动:页面中提供一种表达式,模型驱动:采用模型驱动的方式,INPUT的逻辑视图的配置 2019-04-26
Struts2的复杂数据类型的封装,封装数据到List集合中,封装数据到Map集合当中 2019-04-26
Mysql计算月份差 2019-04-26
OGNL,OGNL在Struts2环境当中的使用(入门) 2019-04-26
Java OGNL入门(Java环境当中使用) 2019-04-26
Struts2的值栈(ValueStack),详解+图解 2019-04-26
OGNL中特殊字符 # $ %的用法和含义,案例+解析 2019-04-26
Struts2的拦截器,Struts2的执行流程,图解+详解(底层代码)以及 自定义拦截器(配置和使用) 2019-04-26
Struts2的标签库大全(案例+用法+解析) 2019-04-26