Thread_管理异步、定时及周期性任务

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

 


Thread_管理异步、定时及周期性任务
 

 

简单分析:

 

结构分析:

1.Task
属性包含处理任务的完整类名、任务处理的参数、延迟的时间(毫秒)、执行的周期间隔(毫秒)。
1.1 任务的完整类名
执行任务时,可以根据处理任务的完整类名,利用反射机制生成任务类的实例
1.2 任务处理的参数
执行任务时,可以从该参数中获取相关的参数值。


2.TaskThread
实现了接口Runnable,并且包含了当前线程要执行的任务对象。用户自定义任务类需要extends该类。

 

3.TaskManager
任务管理器包含了任务队列,访问任务队列的线程,并在TaskManage首次初始化时启动此线程。
构造线程池的时候,任务被阻塞时回调方法;另外还包含了异步任务调度器管理的线程池对象、定时和周期任务的线程池对象,分别对异步任务、定时和周期任务的线程进行统一的管理。taskFutures对象用来存放定时任务,为了取消定时任务使用。

 

4.失败任务再次执行
web应用启动时,通过检索数据库得到执行失败的任务的详细信息,包括任务全路径类名,任务参数等,可用来重启失败任务直到执行成功。