屏蔽多线程实现的细节,让框架的使用者,感受不到框架内部在使用多线程
框架流程图
总体思路
内部持有一个线程池,给出一个ItemProcessor接口,让客户实现每一个元素的处理逻辑,客户自己决定元素处理成什么样算成功,什么样算失败,什么样抛出异常
框架内部,则把出一个ItemProcessor包装成一个Runnable
客户端代码,通过for循环不断的往框架内put ItemProcessor,框架内部则将它们包装成一个个Runnable,并丢入线程池中执行
监控板块
由于需要对任务的执行进度,执行情况进行管理,实时的监控,所以,需要对每一组item用一个统一的jobName进行管理
使用一个统一的JobContext上下文,管理每个job的执行情况,每个job内管理着客户端提交进来的item list
线程池中的线程,执行完一个item时,就需要修改一下JobContext上下文的状态,比如已处理的item数加一等等
反正,这个并行任务执行框架的核心逻辑,就是把每个item都拆散投入到了线程池的不同的线程中了,而不是分片的思想,可能10个或者100个item作为一个分片,进去一个线程
应用场景
适用于批量处理多个item,并且每个item就是一个不可分割的整体,每个item不会再拆分成多个步骤step的场景
视频链接:
2018.05.27-8a、实战项目-并发任务执行框架(1)_哔哩哔哩_bilibili