# parallel-task
**Repository Path**: KIZCQ/parallel-task
## Basic Information
- **Project Name**: parallel-task
- **Description**: 构建任务依赖图,可多作业并行工作,构建一组任务执行单元,跟踪任务执行时间和状态,可增加页面控制任务是否执行。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 67
- **Forks**: 22
- **Created**: 2018-05-28
- **Last Updated**: 2025-06-05
## Categories & Tags
**Categories**: task-schedule
**Tags**: None
## README
# parallel-task
#### 项目介绍
构建任务依赖图,可多作业并行工作,构建一组任务执行单元,跟踪任务执行时间和状态,可增加页面控制任务是否执行。
#### 关键设计

图1 任务执行状态控制图

图2 任务依赖关系概览图
#### 关键类图

图3 任务处理器类图

图4 任务执行单元类图
#### 特性说明
1. 支持多Job并行执行,各个Job之间是相互独立的,每个Job可自定义任务依赖关系;
2. 支持线程池定制,提供了刷新功能,可根据自己的测试结果,定制线程池的超时策略以及线程池大小、清理策略等;
3. 支持零散任务执行:定制一个线程池,可以执行非Job中的“野”任务;
4. 支持“ForkJoin”特性,根据自定义的切分最小单位,Fork出多个子任务,可提交并行执行;
5. 提供ForkJoin可扩展,重写runWorker方法,可自定义Fork策略以及Join策略(afterExecute);
6. 可以自定义可视化界面,监控显示所有任务执行状态;
7. 对于已废弃和已执行完成的任务,不再重新执行,执行状态由调用方提供初始化或动态修改;
8. 提供了三种任务关系初始化方式:使用自定义注解、XML配置、数据库存储读取方式
#### 使用说明
请查看src/test/java下com.ngplat.paralleltask.test.spring中的使用示例。
简单说明:
1. 对于普通任务仅需要继承TaskProcessor, 实现runWorker接口即可;
2. 对于需要拆解子任务的Task,需要继承ForkJoinTask:
2.1) 在构造函数中指定业务处理类: super(worker.class);
2.2) 重写beforeExecute, 构造数据源;
2.3) 重写afterExecute实现Join结果合并;