一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

中断线程任务的方法及装置、存储介质、计算机设备与流程

2022-11-14 14:53:22 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其是涉及到一种中断线程任务的方法及装置、存储介质、计算机设备。


背景技术:

2.目前,计算机系统使用“中断”机制来告知处理器意外的或偶发的活动或状况。当接收中断的时候,处理器会暂停其当前任务,执行处理该状况所必需的步骤,然后继续其普通执行的任务。进程是系统分配资源的最小单位,而线程是系统调度的最小单位,即线程属于进程进行的中一部分,通常一个进程中会有多个线程,每个线程分别执行不同的任务。当线程在循环执行任务的情况下,想要立刻中止该线程的进行,目前的操作方式是调用线程的int errupt方法来尝试中断线程,但是interrupt含义是通知线程需要进行结束,然后设置一个中断标识并抛出异常,但是至于会不会立即中断取决于线程本身,线程中断成功率难以保证。


技术实现要素:

3.有鉴于此,本技术提供了一种中断线程任务方法及装置、存储介质、计算机设备,可以提高线程中断的成功率。
4.根据本技术的一个方面,提供了一种中断线程任务的方法,所述方法包括:
5.响应于目标应用程序的运行信号,创建所述目标应用程序的主线程;
6.接收所述目标应用程序的功能调用请求,并获取与所述功能调用请求匹配的子线程执行代码;
7.若所述子线程执行代码包含循环条件,则基于预设循环中断条件修改所述循环条件,得到目标子线程执行代码,并通过所述主线程创建所述目标子线程执行代码对应的子线程;
8.当接收所述子线程对应的中断请求信号时,向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,以中断所述子线程。
9.可选地,所述预设循环中断条件为所述主线程处于非运行状态,所述向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,以中断所述子线程,包括:
10.模拟所述主线程处于非运行状态,并将所述主线程的非运行状态信号传递至所述子线程中,以使所述子线程基于所述主线程的非运行状态信号产生中断。
11.可选地,所述基于预设循环中断条件修改所述循环条件,得到目标子线程执行代码,包括:
12.提取所述子线程执行代码的循环条件代码段中的第一循环条件代码,并基于所述预设循环中断条件,确定第二循环条件代码;
13.基于所述第一循环条件代码和所述第二循环条件代码,生成目标循环条件代码,其中,目标循环条件为第一循环条件和第二循环条件同时成立;
14.将所述目标循环条件代码嵌入所述子线程的循环条件代码段,得到目标子线程执行代码。
15.可选地,所述方法还包括:
16.响应于目标应用程序的运行信号,创建中断改造进程,其中,所述中断改造进程包括子线程执行代码改造线程和主线程运行状态模拟线程;
17.所述基于预设循环中断条件修改所述循环条件,包括:
18.所述子线程执行代码改造线程基于预设循环中断条件修改所述循环条件;
19.所述向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,包括:
20.所述主线程运行状态模拟线程生成所述主线程达成所述预设循环中断条件的模拟信号,并将所述模拟信号传递至所述子线程中。
21.可选地,所述响应于目标应用程序的运行信号,创建所述目标应用程序的主线程之前,所述方法还包括:
22.获取中断改造进程数据,并将所述中断改造进程数据封装于中断改造插件,其中,所述中断改造进程数据包括子线程执行代码改造线程创建代码及主线程运行状态模拟线程创建代码;
23.所述创建中断改造进程,包括:
24.启动所述中断改造插件,并通过所述中断改造插件创建所述中断改造进程。
25.可选地,所述通过所述主线程创建所述目标子线程执行代码对应的子线程,包括:
26.若与所述功能调用请求匹配的子线程执行代码包括多个,则基于每个子线程对应的预设循环中断条件,分别修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码对应的目标子线程执行代码,并通过所述主线程创建每个所述目标子线程执行代码对应的子线程;
27.相应地,所述当接收所述子线程对应的中断请求信号时,向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,以中断所述子线程,包括:
28.当接收到任一子线程对应的中断请求信号时,生成所述主线程达成所述任一子线程对应的预设循环中断条件的模拟信号,并向所述任一子线程发送所述模拟信号,以中断所述任一子线程。
29.可选地,所述基于每个子线程对应的预设循环中断条件,分别修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码对应的目标子线程执行代码,包括:
30.确定所述目标应用程序的功能调用请求的时间顺序信息,并根据所述时间顺序信息确定与所述功能调用请求匹配的子线程执行代码的修改次序;
31.基于每个子线程对应的预设循环中断条件,按所述修改次序依次修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码的对应的目标子线程执行代码。
32.根据本技术的另一方面,提供了一种中断线程任务装置,所述装置包括:
33.线程创建模块,用于响应于目标应用程序的运行信号,创建所述目标应用程序的主线程;
34.代码获取模块,用于接收所述目标应用程序的功能调用请求,并获取与所述功能调用请求匹配的子线程执行代码;
35.代码修改模块,用于若所述子线程执行代码包含循环条件,则基于所述循环条件修改所述循环条件,得到目标子线程执行代码,并通过所述主线程创建所述目标子线程执行代码对应的子线程;
36.线程中断模块,用于当接收所述子线程对应的中断请求信号时,向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,以中断所述子线程。
37.可选地,所述线程中断模块,还用于:
38.模拟所述主线程处于非运行状态,并将所述主线程的非运行状态信号传递至所述子线程中,以使所述子线程基于所述主线程的非运行状态信号产生中断。
39.可选地,所述代码修改模块,还用于:
40.提取所述子线程执行代码的循环条件代码段中的第一循环条件代码,并基于所述预设循环中断条件,确定第二循环条件代码;
41.基于所述第一循环条件代码和所述第二循环条件代码,生成目标循环条件代码,其中,目标循环条件为第一循环条件和第二循环条件同时成立;
42.将所述目标循环条件代码嵌入所述子线程的循环条件代码段,得到目标子线程执行代码。
43.可选地,所述装置还包括:进程创建模块,用于:
44.响应于目标应用程序的运行信号,创建中断改造进程,其中,所述中断改造进程包括子线程执行代码改造线程和主线程运行状态模拟线程。
45.可选地,所述代码修改模块,还用于:
46.所述子线程执行代码改造线程基于预设循环中断条件修改所述循环条。
47.可选地,所述装置还包括:状态模拟模块,用于:
48.所述主线程运行状态模拟线程生成所述主线程达成所述预设循环中断条件的模拟信号,并将所述模拟信号传递至所述子线程中。
49.可选地,所述装置还包括:插件封装模块,用于:
50.获取中断改造进程数据,并将所述中断改造进程数据封装于中断改造插件,其中,所述中断改造进程数据包括子线程执行代码改造线程创建代码及主线程运行状态模拟线程创建代码。
51.可选地,所述进程创建模块,还用于:
52.启动所述中断改造插件,并通过所述中断改造插件创建所述中断改造进程。
53.可选地,所述代码修改模块,还用于:
54.若与所述功能调用请求匹配的子线程执行代码包括多个,则基于每个子线程对应的预设循环中断条件,分别修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码对应的目标子线程执行代码,并通过所述主线程创建每个所述目标子线程执行代码对应的子线程。
55.可选地,所述线程中断模块,还用于:
56.当接收到任一子线程对应的中断请求信号时,生成所述主线程达成所述任一子线程对应的预设循环中断条件的模拟信号,并向所述任一子线程发送所述模拟信号,以中断所述任一子线程。
57.可选地,所述代码修改模块,还用于:
58.确定所述目标应用程序的功能调用请求的时间顺序信息,并根据所述时间顺序信息确定与所述功能调用请求匹配的子线程执行代码的修改次序;
59.基于每个子线程对应的预设循环中断条件,按所述修改次序依次修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码的对应的目标子线程执行代码。
60.依据本技术又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述中断线程任务方法。
61.依据本技术再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述中断线程任务方法。
62.借由上述技术方案,本技术提供的一种中断线程任务方法及装置、存储介质、计算机设备,首先响应于目标应用程序的运行信号并创建前述目标应用程序的主线程,然后接收前述目标应用程序的功能调用请求,并获取与前述功能调用请求匹配的子线程执行代码,如果前所述子线程执行代码包含循环条件,那么则基于预设循环中断条件修改前述循环条件,得到目标子线程执行代码,并通过前述主线程创建前述目标子线程执行代码对应的子线程,当接收前述子线程对应的中断请求信号时,模拟前述主线程达成前述预设循环中断条件,用于中断前述子线程,为此,通过模拟主线程来达成前述预设循环中断条件,实现了可以立即中断线程任务。
63.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
64.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
65.图1示出了本技术实施例提供的一种中断线程任务方法的流程示意图;
66.图2示出了本技术实施例提供的另一种中断线程任务方法的流程示意图;
67.图3示出了本技术实施例提供的又一种中断线程任务方法的流程示意图;
68.图4示出了本技术实施例提供的一种中断线程任务装置的结构示意图;
69.图5示出了本技术实施例提供的另一种中断线程任务装置的结构示意图。
具体实施方式
70.下文中将参考附图并结合实施例来详细说明本技术。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
71.在本实施例中提供了一种中断线程任务方法,如图1所示,该方法包括:
72.步骤101,响应于目标应用程序的运行信号,创建所述目标应用程序的主线程。
73.步骤102,接收所述目标应用程序的功能调用请求,并获取与所述功能调用请求匹配的子线程执行代码。
74.在本技术上述实施例中,首先用户启动目标应用程序,处理器在响应目标应用程序的运行信号后,即创建前述目标应用程序的主线程。
75.接着,前述处理器接收前述目标应用程序的功能调用请求,同时获取与前述功能调用请求匹配的子线程执行代码,为后续子线程的创建做准备。
76.步骤103,若所述子线程执行代码包含循环条件,则基于预设循环中断条件修改所述循环条件,得到目标子线程执行代码,并通过所述主线程创建所述目标子线程执行代码对应的子线程。
77.在本技术上述实施例中,如果前述子线程执行代码中包含有循环条件,那么根据预设循环中断条件修改前述循环条件,得到目标子线程执行代码,然后通过前述主线程再创建前述目标子线程执行代码对应的子线程,这样,在需要对前述子线程进行中断的时候,可以根据修改后的前述循环条件进行任务中断。
78.在本技术上述实施例中,可选地,步骤103中所述基于预设循环中断条件修改所述循环条件,得到目标子线程执行代码,包括:
79.步骤103-1,提取所述子线程执行代码的循环条件代码段中的第一循环条件代码,并基于所述预设循环中断条件,确定第二循环条件代码。
80.步骤103-2,基于所述第一循环条件代码和所述第二循环条件代码,生成目标循环条件代码,其中,目标循环条件为第一循环条件和第二循环条件同时成立。
81.步骤103-3,将所述目标循环条件代码嵌入所述子线程的循环条件代码段,得到目标子线程执行代码。
82.在本技术上述实施例中,首先提取前述子线程执行代码的循环条件代码段中的第一循环条件代码,同时根据前述预设循环中断条件代码确定第二循环条件代码,其中,第一循环条件代码包括原始循环条件,即按照预设循环总次数依次循环子线程执行代码,例如:
83.public void run(){
84.//循环处理10个任务
85.for(int i=0;i《10;i ){
86.//循环任务
87.}
88.然后根据前述预设循环中断条件代码确定第二循环条件代码,最终结合前述第一循环条件代码和前述第二循环条件代码,生成目标循环条件代码,例如:
89.public void run(){
90.//循环处理10个任务
91.for(int i=0;is running()&&i《10;i ){
92.//循环任务
93.}
94.其中,在上述代码中增加了主线程运行状态的判定,即目标循环条件为第一循环条件和第二循环条件同时成立。
95.最后,将前述目标循环条件代码嵌入前述子线程的循环条件代码段,得到目标子线程执行代码,例如:
96.public static void main(string[]args){
[0097]
runnable subrunnable=new abstractrunnable(){
[0098]
//子线程执行代码
[0099]
@override
[0100]
public void run(){
[0101]
//循环处理10个任务
[0102]
for(int i=0;is running()&&i《10;i ){
[0103]
//循环任务
[0104]
}
[0105]
}
[0106]
};
[0107]
//创建子线程
[0108]
thread subthread=new interruptthread(subrunnable);
[0109]
//启动子线程
[0110]
subthread.start();
[0111]
在上述代码修改的过程中,仅需要改动少部分的代码,即实现了以尽可能最小改动业务方的代码逻辑的方式来达到想要中断线程任务的效果。具体的,巧妙的设计利用了interruptthread的interrupt中断方法,并调用了abstr actrunnable的interrupt方法,设计巧妙,实施简单并且能够广泛适用。
[0112]
步骤104,当接收所述子线程对应的中断请求信号时,向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,以中断所述子线程。
[0113]
最后,当接收前述子线程对应的中断请求信号时,模拟主线程达成预设循环中断条件,产生一个能够让子线程“认为”主线程已经达成预设循环中断条件的模拟信号,并向前述子线程发送该模拟信号,子线程接收到该模拟信号后,会因为该模拟信号“认为”主线程已经达成了预设循环中断条件,而判断循环条件已经不满足,随即中断前述子线程。目前,通过调用子线程未经修改前的中断方法是取决于前述子线程本身,但是对于相关开发人员来说,对于具体的取决于前述子线程本身的定义不是很清楚,为此,采用通过发送前述主线程达成前述预设循环中断条件的模拟信号来实现线程任务中断的方式,能够提高线程中断的成功率。
[0114]
在本技术上述实施例中,可选地,步骤104中所述预设循环中断条件为所述主线程处于非运行状态,所述向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,以中断所述子线程,包括:
[0115]
步骤104-1,模拟所述主线程处于非运行状态,并将所述主线程的非运行状态信号传递至所述子线程中,以使所述子线程基于所述主线程的非运行状态信号产生中断。
[0116]
在本技术上述实施例中,通过向前述子线程发送前述主线程处于非运行状态的模拟信号,即将前述主线程的非运行状态信号传递至前述子线程中,此时,便达成了步骤103-2中前述第一循环条件和前述第二循环条件同时成立的条件,即满足了预设中断条件的情况,为此,子线程便基于前述主线程的非运行状态信号产生了中断。
[0117]
通过应用本实施例的技术方案,首先响应于目标应用程序的运行信号并创建前述目标应用程序的主线程,然后接收前述目标应用程序的功能调用请求,并获取与前述功能调用请求匹配的子线程执行代码,如果前所述子线程执行代码包含循环条件,那么基于预设循环中断条件修改前述循环条件,得到目标子线程执行代码,并通过前述主线程创建前
述目标子线程执行代码对应的子线程,当接收前述子线程对应的中断请求信号时,向前述子线程发送前述主线程达成前述预设循环中断条件的模拟信号,用于中断前述子线程,其中,通过向前述子线程发送主线程达成前述预设循环中断条件的模拟信号来实现线程任务中断的方式,提高了中断线程任务的成功率。
[0118]
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种中断线程任务方法,如图2所示,该方法包括:
[0119]
步骤201,获取中断改造进程数据,并将所述中断改造进程数据封装于中断改造插件,其中,所述中断改造进程数据包括子线程执行代码改造线程创建代码及主线程运行状态模拟线程创建代码。
[0120]
步骤202,响应于目标应用程序的运行信号,启动所述中断改造插件,并通过所述中断改造插件创建所述中断改造进程,其中,所述中断改造进程包括子线程执行代码改造线程和主线程运行状态模拟线程。
[0121]
在本技术上述实施例中,首先获取目标应用程序的中断改造进程数据,然后将前述中断改造进程数据封装于中断改造插件中,其中,前述中断改造进程数据包括子线程执行代码改造线程创建代码及主线程运行状态模拟线程创建代码。
[0122]
接着,在收到目标应用程序的运行信号后,启动前述中断改造插件,并通过前述中断改造插件创建前述中断改造进程,其中,前述中断改造进程包括子线程执行代码改造线程和主线程运行状态模拟线程。
[0123]
在上述实施例中,通过将代码改造能力封装于中断改造插件中,在启动应用程序的同时启动中断改造插件,进而通过中断改造插件创建中断改造进行,再接着创建前述子线程执行代码改造线程及前述主线程运行状态模拟线程,实现了对子线程的创建方式的改造功能,从而提高中断线程任务的成功率。
[0124]
在一种具体的实施方式中,首先定义interrupt thread和abstractrunnable两个类,在interrupt thread的interrupt方法执行前先设置一下abstractrunnable的变量,最后完成插件封装,具体的,例如:
[0125]
public static class interruptthread extends thread{
[0126]
private final runnable target;
[0127]
public interruptthread(runnable target){
[0128]
super(target);
[0129]
this.target=target;
[0130]
}
[0131]
@override public void interrupt(){
[0132]
//优先执行abstractrunnable#interrupt方法
[0133]
((abstractrunnable)target).interrupt();
[0134]
super.interrupt();
[0135]
}
[0136]
}
[0137]
public static abstract class abstractrunnable implements runnable{
[0138]
public volatile boolean running=true;
[0139]
public void interrupt(){
[0140]
running=false;
[0141]
}
[0142]
public boolean isrunning(){
[0143]
if(!running){
[0144]
//如果处于非运行状态,则利用运行时异常直接中断线程的运行
[0145]
throw new runtimeexception("interrupt now.");
[0146]
}
[0147]
return running;
[0148]
}
[0149]
}
[0150]
其中,上述中断改造插件中可以开发为不同语言形式的插件,比如java语言的代码,也可以继续拓展为python语言的插件,还可以拓展为golang语言的插件,即可以根据任一语言扩展出对应的语言插件。通过引入上述中断改造插件可以提高线程中断任务的成功率,并且引入简单,使用高效,只要业务代码中有任何需要中断线程的部分都可以直接引用上述中断改造插件。
[0151]
步骤203,响应于目标应用程序的运行信号,创建所述目标应用程序的主线程,接收所述目标应用程序的功能调用请求,并获取与所述功能调用请求匹配的子线程执行代码。
[0152]
在本技术上述实施例中,在收到目标应用程序的运行信号后,创建前述目标应用程序的主线程,接收前述目标应用程序的功能调用请求,并获取与前述功能调用请求匹配的子线程执行代码,为后续子线程的代码修改做准备。
[0153]
步骤204,若所述子线程执行代码包含循环条件,则通过所述子线程执行代码改造线程基于预设循环中断条件修改所述循环条件,得到目标子线程执行代码,并通过所述主线程创建所述目标子线程执行代码对应的子线程。
[0154]
步骤205,当接收所述子线程对应的中断请求信号时,所述主线程运行状态模拟线程生成所述主线程达成所述预设循环中断条件的模拟信号,并将所述模拟信号传递至所述子线程中,以中断所述子线程。
[0155]
在本技术上述实施例中,如果前述子线程执行代码包含循环条件,则通过步骤202中子线程执行代码改造线程,根据预设循环中断条件修改前述循环条件,得到目标子线程执行代码,并通过前述主线程创建前述目标子线程执行代码对应的子线程。
[0156]
接着,当接收前述子线程对应的中断请求信号时,通过步骤202中主线程运行状态模拟线程生成前述主线程处于非运行状态的模拟信号,即,使前述主线程达成前述预设循环中断条件,并将主线程处于非运行状态的模拟信号传递至所述子线程,从而中断所述子线程。
[0157]
通过应用本实施例的技术方案,首先获取中断改造进程数据,并将前述中断改造进程数据封装于中断改造插件中,接着响应于目标应用程序的运行信号,启动前述中断改造插件,并通过前述中断改造插件创建前述中断改造进程,其中,前述中断改造进程包括子线程执行代码改造线程和主线程运行状态模拟线程,然后分别通过子线程执行代码改造线
程和主线程运行状态模拟线程实现对子线程的执行代码改造功能以及主线程运行状态的模拟功能,其中,前述主线程运行状态的模拟功能即将前述主线程达成前述预设循环中断条件的模拟信号传递至前述子线程,从而在接收前述子线程对应的中断请求信号时用以中断前述子线程,实现了以尽可能最小改动业务方的代码逻辑的方式中断线程任务的效果,提高了线程任务中断的成功率。
[0158]
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了又一种中断线程任务方法,如图3所示,该方法包括:
[0159]
步骤301,响应于目标应用程序的运行信号,创建所述目标应用程序的主线程,接收所述目标应用程序的功能调用请求,并获取与所述功能调用请求匹配的子线程执行代码。
[0160]
在本技术上述实施例中,在收到目标应用程序的运行信号后,首先创建前述目标应用程序的主线程,然后接收前述目标应用程序的功能调用请求,并获取与前述功能调用请求匹配的子线程执行代码,为后续子线程代码修改做准备。
[0161]
步骤302,若与所述功能调用请求匹配的子线程执行代码包括多个,则确定所述目标应用程序的功能调用请求的时间顺序信息,并根据所述时间顺序信息确定与所述功能调用请求匹配的子线程执行代码的修改次序。
[0162]
接着,如果获取到多个前述功能调用请求匹配的子线程执行代码,那么确定前目标应用程序的功能调用请求的时间顺序信息,以便根据前述时间顺序信息确定与前述功能调用请求匹配的子线程执行代码的修改次序。
[0163]
步骤303,基于每个子线程对应的预设循环中断条件,按所述修改次序依次修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码的对应的目标子线程执行代码,并通过所述主线程创建每个所述目标子线程执行代码对应的子线程。
[0164]
在上述实施例中,根据每个子线程对应的预设循环中断条件,按照步骤302中确定的修改次序依次修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码的对应的目标子线程执行代码,并通过前述主线程创建每个前述目标子线程执行代码对应的子线程。
[0165]
步骤304,当接收到任一子线程对应的中断请求信号时,生成所述主线程达成所述任一子线程对应的预设循环中断条件的模拟信号,并向所述任一子线程发送所述模拟信号,以中断所述任一子线程。
[0166]
在本技术上述实施例中,当接收到任一子线程对应的中断请求信号时,随即生成前述主线程达成前述任一子线程对应的预设循环中断条件的模拟信号,以中断前述任一子线程,即只要业务代码中有任何需要中断线程的地方都可以直接进行线程任务中断。
[0167]
通过应用本实施例的技术方案,响应于目标应用程序的运行信号,创建所述目标应用程序的主线程并获取子线程执行代码,然后根据确定的子线程执行代码的修改次序并基于每个子线程对应的预设循环中断条件,按所述修改次序依次修改每个子线程执行代码的所述循环条件得到每个子线程执行代码的对应的目标子线程执行代码,最终得到子线程,进而当接收到任一子线程对应的中断请求信号时,生成所述主线程达成所述任一子线程对应的预设循环中断条件的模拟信号,并向所述任一子线程发送所述模拟信号,以中断所述任一子线程,提高了中断线程任务的成功率。
[0168]
进一步的,作为图1方法的具体实现,本技术实施例提供了一种中断线程任务装置,如图4所示,该装置包括:
[0169]
线程创建模块41,用于响应于目标应用程序的运行信号,创建所述目标应用程序的主线程;
[0170]
代码获取模块42,用于接收所述目标应用程序的功能调用请求,并获取与所述功能调用请求匹配的子线程执行代码;
[0171]
代码修改模块43,用于若所述子线程执行代码包含循环条件,则基于所述循环条件修改所述循环条件,得到目标子线程执行代码,并通过所述主线程创建所述目标子线程执行代码对应的子线程;
[0172]
线程中断模块44,用于当接收所述子线程对应的中断请求信号时,向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,以中断所述子线程。
[0173]
可选地,所述线程中断模块44,还用于:
[0174]
模拟所述主线程处于非运行状态,并将所述主线程的非运行状态信号传递至所述子线程中,以使所述子线程基于所述主线程的非运行状态信号产生中断。
[0175]
可选地,所述代码修改模块43,还用于:
[0176]
提取所述子线程执行代码的循环条件代码段中的第一循环条件代码,并基于所述预设循环中断条件,确定第二循环条件代码;
[0177]
基于所述第一循环条件代码和所述第二循环条件代码,生成目标循环条件代码,其中,目标循环条件为第一循环条件和第二循环条件同时成立;
[0178]
将所述目标循环条件代码嵌入所述子线程的循环条件代码段,得到目标子线程执行代码。
[0179]
可选地,所述代码修改模块43,还用于:
[0180]
所述子线程执行代码改造线程基于预设循环中断条件修改所述循环条件;
[0181]
可选地,所述代码修改模块43,还用于:
[0182]
若与所述功能调用请求匹配的子线程执行代码包括多个,则基于每个子线程对应的预设循环中断条件,分别修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码对应的目标子线程执行代码,并通过所述主线程创建每个所述目标子线程执行代码对应的子线程;
[0183]
可选地,所述线程中断模块44,还用于:
[0184]
当接收到任一子线程对应的中断请求信号时,生成所述主线程达成所述任一子线程对应的预设循环中断条件的模拟信号,并向所述任一子线程发送所述模拟信号,以中断所述任一子线程。
[0185]
可选地,所述代码修改模块43,还用于:
[0186]
确定所述目标应用程序的功能调用请求的时间顺序信息,并根据所述时间顺序信息确定与所述功能调用请求匹配的子线程执行代码的修改次序;
[0187]
基于每个子线程对应的预设循环中断条件,按所述修改次序依次修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码的对应的目标子线程执行代码。
[0188]
进一步的,本技术实施例还提供了一种中断线程任务装置,如图5所示,该装置包括:
[0189]
线程创建模块51,用于响应于目标应用程序的运行信号,创建所述目标应用程序的主线程;
[0190]
代码获取模块52,用于接收所述目标应用程序的功能调用请求,并获取与所述功能调用请求匹配的子线程执行代码;
[0191]
代码修改模块53,用于若所述子线程执行代码包含循环条件,则基于所述循环条件修改所述循环条件,得到目标子线程执行代码,并通过所述主线程创建所述目标子线程执行代码对应的子线程;
[0192]
线程中断模块54,用于当接收所述子线程对应的中断请求信号时,向所述子线程发送所述主线程达成所述预设循环中断条件的模拟信号,以中断所述子线程;
[0193]
进程创建模块55,用于响应于目标应用程序的运行信号,创建中断改造进程,其中,所述中断改造进程包括子线程执行代码改造线程和主线程运行状态模拟线程;
[0194]
状态模拟模块56,用于所述主线程运行状态模拟线程生成所述主线程达成所述预设循环中断条件的模拟信号,并将所述模拟信号传递至所述子线程中;
[0195]
插件封装模块57,用于获取中断改造进程数据,并将所述中断改造进程数据封装于中断改造插件,其中,所述中断改造进程数据包括子线程执行代码改造线程创建代码及主线程运行状态模拟线程创建代码。
[0196]
可选地,所述进程创建模块55,还用于:
[0197]
启动所述中断改造插件,并通过所述中断改造插件创建所述中断改造进程。
[0198]
可选地,所述线程中断模块54,还用于:
[0199]
模拟所述主线程处于非运行状态,并将所述主线程的非运行状态信号传递至所述子线程中,以使所述子线程基于所述主线程的非运行状态信号产生中断。
[0200]
可选地,所述代码修改模块53,还用于:
[0201]
提取所述子线程执行代码的循环条件代码段中的第一循环条件代码,并基于所述预设循环中断条件,确定第二循环条件代码;
[0202]
基于所述第一循环条件代码和所述第二循环条件代码,生成目标循环条件代码,其中,目标循环条件为第一循环条件和第二循环条件同时成立;
[0203]
将所述目标循环条件代码嵌入所述子线程的循环条件代码段,得到目标子线程执行代码。
[0204]
可选地,所述代码修改模块53,还用于:
[0205]
所述子线程执行代码改造线程基于预设循环中断条件修改所述循环条件;
[0206]
可选地,所述代码修改模块53,还用于:
[0207]
若与所述功能调用请求匹配的子线程执行代码包括多个,则基于每个子线程对应的预设循环中断条件,分别修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码对应的目标子线程执行代码,并通过所述主线程创建每个所述目标子线程执行代码对应的子线程;
[0208]
可选地,所述线程中断模块54,还用于:
[0209]
当接收到任一子线程对应的中断请求信号时,生成所述主线程达成所述任一子线程对应的预设循环中断条件的模拟信号,并向所述任一子线程发送所述模拟信号,以中断所述任一子线程。
[0210]
可选地,所述代码修改模块53,还用于:
[0211]
确定所述目标应用程序的功能调用请求的时间顺序信息,并根据所述时间顺序信息确定与所述功能调用请求匹配的子线程执行代码的修改次序;
[0212]
基于每个子线程对应的预设循环中断条件,按所述修改次序依次修改每个子线程执行代码的所述循环条件,得到每个子线程执行代码的对应的目标子线程执行代码。
[0213]
需要说明的是,本技术实施例提供的一种中断线程任务装置所涉及各功能单元的其他相应描述,可以参考图1至图3方法中的对应描述,在此不再赘述。
[0214]
基于上述如图1至图3所示方法,相应的,本技术实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图1至图3所示的中断线程任务方法。
[0215]
基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施场景所述的方法。
[0216]
基于上述如图1至图3所示的方法,以及图4及图5所示的虚拟装置实施例,为了实现上述目的,本技术实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1至图3所示的中断线程任务方法。
[0217]
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(radio frequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、wi-fi接口)等。
[0218]
本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0219]
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
[0220]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本技术可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现响应于目标应用程序的运行信号并创建前述目标应用程序的主线程,然后接收前述目标应用程序的功能调用请求,并获取与前述功能调用请求匹配的子线程执行代码,如果前所述子线程执行代码包含循环条件,那么基于预设循环中断条件修改前述循环条件,得到目标子线程执行代码,并通过前述主线程创建前述目标子线程执行代码对应的子线程,当接收前述子线程对应的中断请求信号时,模拟前述主线程达成前述预设循环中断条件,用于中断所述子线程,通过模拟主线程来达成前述预设循环中断条件,提高了中断线程任务的成功率。
[0221]
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本技术所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于
本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0222]
上述本技术序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本技术的几个具体实施场景,但是,本技术并非局限于此,任何本领域的技术人员能思之的变化都应落入本技术的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献