多线程任务处理方法和装置的制造方法

文档序号:9921904阅读:260来源:国知局
多线程任务处理方法和装置的制造方法
【技术领域】
[0001]本申请涉及计算机技术领域,具体涉及计算机任务处理技术领域,尤其涉及多线程任务处理方法和装置。
【背景技术】
[0002]当前的任务处理方法,对于从用户处接收的业务信息中包括的任务信息的实体,采用传统的单线程串连执行:单个原子性业务(例如退款业务等)的操作处于完全独立的状态,整个原子性业务流程的成功或者失败,与多个任务(例如,冻结资金池任务,扣费任务和退款任务等)的执行结果密切相关,也即,若一个任务执行失败,则整个原子性业务的流程(例如退款业务的流程)失败;若全部任务执行成功,则原子性业务的流程成功。
[0003]然而,当前的任务处理方法,由于采用单线程串联执行单个业务中的多个任务,当一个任务成功后,执行另一个任务,如果有一个任务执行失败就会终止整个原子性业务的执行流程,致使整个业务失败,因此处理单个业务的时间较长,处理业务的效率较低。

【发明内容】

[0004]本申请的目的在于提出一种改进的多线程任务处理方法和装置,来解决以上【背景技术】部分提到的技术问题。
[0005]第一方面,本申请提供了一种多线程任务处理方法,所述方法包括:任务管理器接收业务信息,将所述业务信息中包括的任务信息的实体添加至任务池中,调用管理模块以处理所述任务池中的实体,以及调用管理模块以获取处理所述任务池中的实体的结果,其中,所述实体包括:加锁标识、任务处理函数;所述管理模块调用执行模块以处理所述任务池中的实体,调用监听模块以获取所述执行模块处理所述任务池中的实体的结果;所述执行模块从所述任务池中获取实体,调用线程、锁以及获取的实体的任务处理函数,对获取的实体进行处理,将处理的结果通知所述监听模块,其中,所述锁根据获取的实体的加锁标识确定;所述监听模块根据所述处理的结果记录成功标记或失败标记,并将所述成功标记或失败标记发送给所述管理模块。
[0006]在一些实施例中,所述实体还包括:重试次数;以及所述监听模块根据所述处理的结果记录失败标记,并将记录的失败标记发送给所述管理模块包括:所述监听模块响应于所述处理的结果为失败,根据获取的实体的重试次数,通知所述执行模块重试处理所述获取的实体,当重试处理的次数达到所述重试次数但处理的结果仍为失败时,记录失败标记,并将所述失败标记发送给所述管理模块。
[0007]在一些实施例中,所述任务管理器接收业务信息,将所述业务信息中包括的任务信息的实体添加至任务池中包括:所述任务管理器接收业务信息,将预设处理时间添加至所述业务信息包括的任务信息的实体中,将已添加所述预设处理时间的实体添加至任务池中;以及所述管理模块调用执行模块以处理所述任务池中的实体包括:所述管理模块响应于在所述预设处理时间内未接收到所述处理的结果,发送终止指令给所述执行模块以终止处理所述已添加所述预设处理时间的实体,并将所述已添加所述预设处理时间的实体重新添加至所述任务池中。
[0008]在一些实施例中,所述方法还包括:所述任务管理器响应于所述任务信息的实体满足预设的事务条件,启动所述任务信息的实体的事务;所述管理模块响应于接收到所述失败标记并且与所述失败标记对应的实体已预先启动事务,调用所述执行模块以回滚所述与所述失败标记对应的实体。
[0009]在一些实施例中,所述实体还包括:回滚函数;以及所述方法还包括:所述执行模块调用所述回滚函数以回滚所述与所述失败标记对应的实体。
[0010]在一些实施例中,所述方法还包括:所述任务管理器响应于接收用户选择而确定分布式锁,并将所述分布式锁添加至分布式锁池中;以及所述执行模块调用锁包括:所述执行模块从所述分布式锁池中调用所述获取的实体的加锁标识所指示的锁。
[0011 ]在一些实施例中,所述方法还包括:所述任务管理器接收添加执行模块指令,根据所述添加执行模块指令添加新的执行模块至执行模块池;以及所述管理模块调用执行模块以处理所述任务池中的实体包括:所述管理模块从所述执行模块池中调用执行模块以处理所述任务池中的实体。
[0012]在一些实施例中,所述方法还包括:所述任务管理器接收添加监听模块指令,根据所述添加监听模块指令添加新的监听模块至监听模块池;所述管理模块调用监听模块以获取所述执行模块处理所述实体的结果包括:所述管理模块从所述监听模块池中调用监听模块以获取所述执行模块处理所述获取的实体的结果。
[0013]在一些实施例中,所述方法还包括:所述管理模块对所述处理的结果进行以下一项或多项处理:存入数据库,写入日志和通知第三方系统。
[0014]第二方面,本申请提供了一种多线程任务处理装置,所述装置包括:任务管理器,用于接收业务信息,将所述业务信息中包括的任务信息的实体添加至任务池中,调用管理模块以处理所述任务池中的实体,以及调用管理模块以获取处理所述任务池中的实体的结果,其中,所述实体包括:加锁标识、任务处理函数;所述管理模块,用于调用执行模块以处理所述任务池中的实体,调用监听模块以获取所述执行模块处理所述任务池中的实体的结果;所述执行模块,用于从所述任务池中获取实体,调用线程、锁以及获取的实体的任务处理函数,对获取的实体进行处理,将处理的结果通知所述监听模块,其中,所述锁根据获取的实体的加锁标识确定;所述监听模块,用于根据所述处理的结果记录成功标记或失败标记,并将所述成功标记或失败标记发送给所述管理模块。
[0015]在一些实施例中,所述任务管理器中的所述实体还包括:重试次数;以及所述监听模块进一步用于:响应于所述处理的结果为失败,根据获取的实体的重试次数,通知所述执行模块重试处理所述获取的实体,当重试处理的次数达到所述重试次数但处理的结果仍为失败时,记录失败标记,并将所述失败标记发送给所述管理模块。
[0016]在一些实施例中,所述任务管理器进一步用于:接收业务信息,将预设处理时间添加至所述业务信息包括的任务信息的实体中,将已添加所述预设处理时间的实体添加至任务池中;以及所述管理模块进一步用于:响应于在所述预设处理时间内未接收到所述处理的结果,发送终止指令给所述执行模块以终止处理所述已添加所述预设处理时间的实体,并将所述已添加所述预设处理时间的实体重新添加至所述任务池中。
[0017]在一些实施例中,所述任务管理器进一步用于:响应于所述任务信息的实体满足预设的事务条件,启动所述任务信息的实体的事务;以及所述管理模块进一步用于:响应于接收到所述失败标记并且与所述失败标记对应的实体已预先启动事务,调用所述执行模块以回滚所述与所述失败标记对应的实体。
[0018]在一些实施例中,所述任务管理器中的所述实体还包括:回滚函数;以及所述执行模块进一步用于:调用所述回滚函数以回滚所述与所述失败标记对应的实体。
[0019]在一些实施例中,所述任务管理器进一步用于:响应于接收用户选择而确定分布式锁,并将所述分布式锁添加至分布式锁池中;以及所述执行模块进一步用于:所述执行模块从所述分布式锁池中调用所述获取的实体的加锁标识所指示的锁。
[0020]在一些实施例中,所述任务管理器进一步用于:接收添加执行模块指令,根据所述添加执行模块指令添加新的执行模块至执行模块池;以及所述管理模块进一步用于:从所述执行模块池中调用执行模块以处理所述任务池中的实体。
[0021]在一些实施例中,所述任务管理器进一步用于:接收添加监听模块指令,根据所述添加监听模块指令添加新的监听模块至监听模块池;以及所述管理模块进一步用于:从所述监听模块池中调用监听模块以获取所述执行模块处理所述获取的实体的结果。
[0022]在一些实施例中,所述管理模块进一步用于:对所述处理的结果进行以下一项或多项处理:存入数据库,写入日志和通知第三方系统。
[0023]本申请提供的多线程任务处理方法和装置,通过任务管理器接收业务信息,将业务信息中包括的任务信息的实体添加至任务池中,调用管理模块以处理任务池中的实体,以及调用管理模块以获取处理任务池中的实体的结果,之后通过管理模块调用执行模块以处理任务池中的实体,调用监听模块以获取执行模块处理任务池中的实体的结果;之后通过执行模块从任务池中获取实体,调用线程、锁以及获取的实体的任务处理函数,对获取的实体进行处理,将处理的结果通知监听模块,最后通过监听模块根据处理的结果记录成功标记或失败标记,并将成功标记或失败标记发送给管理模块,从而实现了多线程并行执行多个任务信息的实体,处理单个业务的时间较短,提高了处理业务的效率。
[0024]进一步地,根据部分实施例,监听模块响应于处理任务信息的实体失败,根据该实体的重试次数,通知执行模块重试处理,当重试处理的次数达到重试次数但处理的结果仍为失败时,记录失败标记,并将失败标记发送给管理模块,从而保证了实体处理失败后可以进行回退重试,提高了处理任务成功的概率,从而提高了处理业务成功的概率,并且在重试达到重试次数但仍失败时自动终止其他未执行的任务,从而保证资源的最小化消耗。
【附图说明】
[0025]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0026]图1是本申请可以应用于其中的示例性系统架构图;
[0027]图2是根据本申请实施例的多线程任务处理方法的一个示意性流程图;
[0028]图3是根据本申请实施例的多线程任务处理方法的一个具体的实现场景的示意图;
[0029]图4是根据本申请实施例的根据预设处理时间处理任
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1