项目中有很多异步、定时及周期性任务的需求,其实现有一定的特点,汇总以备忘。

简单分析:
结构分析:
1.Task
属性包含处理任务的完整类名、任务处理的参数、延迟的时间(毫秒)、执行的周期间隔(毫秒)。
1.1 任务的完整类名
执行任务时,可以根据处理任务的完整类名,利用反射机制生成任务类的实例
1.2 任务处理的参数
执行任务时,可以从该参数中获取相关的参数值。
2.TaskThread
实现了接口Runnable,并且包含了当前线程要执行的任务对象。用户自定义任务类需要extends该类。
3.TaskManager
任务管理器包含了任务队列,访问任务队列的线程,并在TaskManage首次初始化时启动此线程。
构造线程池的时候,任务被阻塞时回调方法;另外还包含了异步任务调度器管理的线程池对象、定时和周期任务的线程池对象,分别对异步任务、定时和周期任务的线程进行统一的管理。taskFutures对象用来存放定时任务,为了取消定时任务使用。
4.失败任务再次执行
web应用启动时,通过检索数据库得到执行失败的任务的详细信息,包括任务全路径类名,任务参数等,可用来重启失败任务直到执行成功。
本文详细介绍了如何通过设计一个任务管理器来处理项目中的异步、定时及周期性任务需求。重点阐述了任务的结构、执行流程以及任务管理器的实现细节,包括任务队列、线程池的使用以及失败任务的重试机制。
885

被折叠的 条评论
为什么被折叠?



