[发明专利]一种解决业务过程耗时高的方法有效
申请号: | 202110794139.8 | 申请日: | 2021-07-14 |
公开(公告)号: | CN113485809B | 公开(公告)日: | 2022-10-18 |
发明(设计)人: | 米大洋 | 申请(专利权)人: | 上海通联金融服务有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 上海翰信知识产权代理事务所(普通合伙) 31270 | 代理人: | 张维东 |
地址: | 200437 上海市虹口*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解决 业务 过程 耗时 方法 | ||
本发明涉及一种解决业务过程耗时高的方法,包括以下步骤:S1:在任务状态记录器中记录线程任务的状态;S2:在执行当前线程任务时,判断当前线程任务是否处于初始化状态,若是,则执行S3,若不是,则执行S4;S3:对处于初始化状态的线程任务进行更新,若更新成功,则执行当前线程任务的业务代码,并在执行结束后继续执行S4;若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作;S4:遍历任务状态记录器中所有线程任务的状态,若有处于初始化状态的线程任务,则执行S3。本发明通过检测任务状态记录器中记录的状态,进行识别并及时执行处于初始化状态的线程任务,解决了业务过程耗时高的问题。
技术领域
本发明涉及业务处理技术领域,特别涉及一种解决业务过程耗时高的方法。
背景技术
在业务流程中,通常包含多个线程任务需要执行。而现有技术中,执行业务中线程任务的方式为:在线程任务封装后,将线程任务丢给线程池执行;在执行过程中,至于线程任务什么时候被执行则不得而知,而主线程需要等待所有线程任务执行完毕并进行合并结果后才可以继续往下执行,但如果线程任务中某些很快执行,某些延迟执行,便会造成业务过程非常耗时等问题。
因此有必要提供一种解决业务过程耗时高的方法,以解决现有技术中多个接口交互时,同一个批次任务中某些任务执行不及时带来的耗时高的问题。
发明内容
本发明的目的在于提供一种解决业务过程耗时高的方法,以解决现有技术中多个接口交互时,同一个批次任务中某些任务执行不及时带来的耗时高的问题。
为了解决上述问题,本发明提供了一种解决业务过程耗时高的方法,包括以下步骤:
S1:记录同一个线程生成的所有线程任务,并在任务状态记录器中记录所述线程任务的状态;
S2:在执行当前线程任务时,判断当前线程任务是否处于初始化状态,若是,则执行S3,若不是,则执行S4;
S3:对处于初始化状态的线程任务进行更新,若更新成功,则执行当前线程任务的业务代码,并在执行结束后将被执行的线程任务的状态更改为成功状态或失败状态,并继续执行S4;若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作;
S4:获取任务状态记录器中记录的所述线程任务的状态,遍历所有线程任务的状态,若有处于初始化状态的线程任务,则执行S3,若没有,则唤醒等待中的业务主线程。
可选的,在所述解决业务过程耗时高的方法中,S1中,记录所述线程任务的状态,状态包括初始化状态、成功状态、失败状态和执行中状态。
可选的,在所述解决业务过程耗时高的方法中,对处于初始化状态的线程任务进行更新的方式为:
通过CAS更新当前线程任务的状态,其中CAS为Compare and Swap;
若更新成功,则当前线程任务的状态改为执行中,并执行所述线程任务的业务代码,
若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作。
可选的,在所述解决业务过程耗时高的方法中,在S3中,将被执行的线程任务的状态更改为成功状态或失败状态之后,任务计数器中的计数减一。
可选的,在所述解决业务过程耗时高的方法中,任务计数器中的计数减为0后,通过线程之间的协作唤醒等待中的业务主线程,继续往下执行业务。
可选的,在所述解决业务过程耗时高的方法中,在S3中,自旋操作的方式如下:
持续更新,直到更新成功或当前线程任务被其他线程更新后退出持续更新的动作,以达到执行所述线程任务的业务代码的目的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海通联金融服务有限公司,未经上海通联金融服务有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110794139.8/2.html,转载请声明来源钻瓜专利网。