[发明专利]单线程任务的多线程执行方法及系统有效
申请号: | 201310655730.0 | 申请日: | 2013-12-05 |
公开(公告)号: | CN103605498A | 公开(公告)日: | 2014-02-26 |
发明(设计)人: | 张士恒;王绍国;李鹏翼 | 申请(专利权)人: | 用友软件股份有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/48 |
代理公司: | 北京中恒高博知识产权代理有限公司 11249 | 代理人: | 刘洪京 |
地址: | 100094 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 线程 任务 多线程 执行 方法 系统 | ||
1.一种单线程任务的多线程执行方法,其特征在于,所述方法包括:
(1)接收单线程总任务,并进行上下文配置,其中在所述上下文配置中对任务划分模式、事务处理方式和多线程执行过程中的线程池大小进行配置;
(2)对所述单线程总任务进行任务自动划分,其中在任务自动划分过程中根据所述上下文配置及所述单线程总任务中的任务总数进行任务自动划分,并且在任务自动划分中使每一个线程处理的任务均衡,即执行时间相同并且执行步骤的数量相同;
(3)根据所述上下文配置中配置的线程池大小来创建线程池,其中在线程池中创建处理线程并且对新线程上下文环境进行初始化;
(4)根据所述上下文配置中配置的事务处理方式来配置线程的事务处理,其中根据上下文配置,该事务处理方式包括任务整体成功和任务部分成功在内的至少两种事务处理方式;
(5)对划分后的任务进行任务调度和多线程管理组合,其中能够可选择地启用多线程执行功能,并且根据步骤(2)中对所述单线程总任务的任务自动划分以获取划分后的子任务、根据步骤(3)中的线程池获取线程、同时根据步骤(4)中的事务处理方式获取事务,将获取的所述子任务、线程和事务进行组合管理;
(6)根据步骤(5)中获取的子任务、线程和事务组合后,执行线程处理过程。
2.根据权利要求1所述的方法,其特征在于,在步骤(2)中,根据上下文配置来确定任务划分模式,所述方法能够自动匹配两种任务划分方式:对象数组方式和数据库表方式。
3.根据权利要求2所述的方法,其特征在于,所述对象数组方式是均等地任务分配方式,根据需要转换为多线程执行的现有单线程任务的总任务数及线程个数均等地分割任务,这种方式适用于每个任务完成所需资源相同,即当任务总数为N时,根据资源确定线程个数为M,则每个线程需要处理的任务为N/M。
4.根据权利要求2所述的方法,其特征在于,所述数据库表方式用于不是所有任务完成所需资源相同的情况,在相同的维度下的所有任务所需数据量差距非常大,数据库表方式根据任务支持数量进行自适应,即根据传入数据库表需要转换为多线程执行的现有单线程任务、任务划分维度、每个任务处理数据最大量进行自适应,自动划分任务,可使每个划分后的任务数据量相同。
5.根据权利要求1所述的方法,其特征在于,在所述步骤(3)中,所述上下文配置中的配置创建所述线程池时支持:主线程调用完成后即结束和等待子线程完全执行完成后结束两种模式。
6.根据权利要求1所述的方法,其特征在于,在所述步骤(4)中,所述事务处理方式据上下文配置进行事务处理,如果配置所述任务整体成功即所有线程共用一个事务,如果配置允许所述任务部分成功则每一个线程单独创建单独事务。
7.根据权利要求6所述的方法,其特征在于,
a)当所有线程共用一个事务时,如果有一个线程失败则整个事务重新执行,该模式适用于任务之间有关联关系的情况;
b)当每一个线程单独创建单独事务时,如果该线程执行成功则直接提交事务,该模式适用于任务与任务之间没有直接关系的情况。
8.根据权利要求1所述的方法,其特征在于,在步骤(5)中,启用多线程执行功能包括如下两种方式:
a)直接调用,在所述单线程总任务中以参数传输处理方式完成多线程执行方法的调用;
b)面向切面编程(AOP)方式,是多线程执行方式与所述单线程总任务耦合,以完成对所述单线程总任务的单线程执行和多线程执行之间的切换。
9.一种采用如权利要求1-8中任意一项所述的单线程任务的多线程执行方法的系统,其特征在于,所述系统包括:
单线程总任务接收及配置模块,其用于接收单线程总任务并进行上下文配置,在所述上下文配置中对任务划分模式、事务处理方式和多线程执行过程中的线程池大小进行配置;
任务自动划分模块,其对所述单线程总任务进行任务自动划分,其中在自动划分过程中根据所述上下文配置及所述单线程总任务中的任务总数进行任务自动划分,并且在任务自动划分过程中使每一个线程处理的任务均衡,即执行时间相同并且执行步骤的数量相同;
线程池创建模块,其根据所述上下文配置中配置的线程池大小创建线程池,其中在线程池中处理线程的创建、新线程上下文环境的初始化;
事务处理方式配置模块,其根据所述上下文配置中配置的事务处理方式,其中根据上下文配置,该事务处理方式包括任务整体成功和任务部分成功在内的至少两种事务处理方式;
任务调度模块,其对划分后的任务进行任务调度和多线程管理组合,其中能够可选择启用多线程执行功能,并且将获取的所述子任务、线程和事务进行组合管理;
执行模块,其在将获取的子任务、线程和事务组合后,执行处理过程。10.根据权利要求9所述的系统,其特征在于,所述单线程总任务接收及配置模块、所述任务自动划分模块、所述线程池创建模块、所述事务处理方式配置模块、所述任务调度模块和所述执行模块顺次连接或者采用串联/并联的混合连接模式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于用友软件股份有限公司,未经用友软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310655730.0/1.html,转载请声明来源钻瓜专利网。