1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gepengjun-thread-flow

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_CN.md 5.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gepengjun Отправлено 17.02.2021 05:29 7a17b24

ThreadFlow

介绍

线程编排的小工具. 可以执行任意串并行组合的线程;
支持单个单元的超时控制;
每个单元可以有自己的参数及返回值. 支持单个单元结果的异步回调.
支持总体任务的超时调用及总体任务结束后的结果调用;
支持动态的决定不必要再执行的单元跳过执行, 亦可将不必要继续执行而正在执行的线程进行中断;
每个单元可适用在不同的任务编排中 支持动态修改后置节点
如果喜欢的话,点个星标

软件架构

了解本项目可以从test里的测试用例看起.
基本的功能:
1. 串行线程调用 :
  1.1. 单元执行 A -> B -> C
       单元耗时  1    1      1    单位:秒
       是否异常 否   否   否
   那么当A单元执行成功后,会启动B执行, B单元执行成功后会启动C

  1.2. 单元执行 A -> B -> C
       单元耗时  1    1      1    单位:秒
       是否异常 否   是   否
   那么当A单元执行成功后,会启动B, B线程执行异常会直接跳过C单元的执行

2. 简单的并行调用:
  2.1 全部非必须
      A --非必须 正常 1秒-->
      B --非必须 正常 2秒--> D --正常 0.5秒--
      C --非必须 正常 2秒-->
    谁执行的快, D单元用谁的参数
    预期执行: A执行成功后会启动D线程, D线程开始执行并将B,C线程中断, 整体执行1.5秒
  2.2 既有必须也有非必须
      A -- 必须   正常 1秒-->
      B --非必须 正常 2秒--> D --正常 0.5秒--
      C --非必须 正常 2秒-->
    A单元先执行成功
    B,C单元谁先执行成功,谁启动D
    预期执行 2.5秒
2.3 全部必须项
      A -- 必须   正常 1秒-->
      B -- 必须   正常 2秒--> D --正常 0.5秒--
      C -- 必须   正常 3秒-->
    A,B,C单元对于D单元必须
    预期: A,B,C都执行成功, D再执行

2.4 全部都必须且有异常
      A -- 必须   正常 1秒-->
      B -- 必须   异常 1秒--> D --正常 0.5秒--
      C -- 必须   正常 2秒-->
    A,B,C单元对于D单元必须_
    A,B都执行1秒, C执行2秒
    其中B会执行失败
    预期: A执行成功, B执行异常后将D 设置为Skipped,跳过执行. 并将C中断.

3. 串并行组合
      A ---->
                  C ---->
      B ---->
                                      F
      D ---->E ---->
    A,B,D同时启动
    A,B都执行完成之后执行C
    D执行完成之后执行E
    C,E执行完成之后执行F
    其中C,E对F都是非必须, 假如C很快执行完成,启动F执行. 此时D接口还在执行, 那么在F启动执行时会设置E为Skipped 跳过执行, 并将D线程中断.

4. 其中WorkHandler可动态拓展
例如 1.可以设置如果A单元执行不成功,则启动B
     2.可以设置根据A单元执行结果, 动态的决定后一级单元B,C哪一个执行.

安装教程

直接拉取

使用说明

简单的java项目, 可直接打jar包引入你的项目

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/gepengjun-thread-flow.git
git@api.gitlife.ru:oschina-mirror/gepengjun-thread-flow.git
oschina-mirror
gepengjun-thread-flow
gepengjun-thread-flow
master