CN116450341A - 异步回调方法、装置、设备、存储介质和程序产品 - Google Patents
异步回调方法、装置、设备、存储介质和程序产品 Download PDFInfo
- Publication number
- CN116450341A CN116450341A CN202310186112.XA CN202310186112A CN116450341A CN 116450341 A CN116450341 A CN 116450341A CN 202310186112 A CN202310186112 A CN 202310186112A CN 116450341 A CN116450341 A CN 116450341A
- Authority
- CN
- China
- Prior art keywords
- thread
- function
- asynchronous
- main
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000006870 function Effects 0.000 claims description 317
- 238000004590 computer program Methods 0.000 claims description 33
- 238000001514 detection method Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 31
- 230000008569 process Effects 0.000 abstract description 27
- 238000010586 diagram Methods 0.000 description 9
- 238000012544 monitoring process Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种异步回调方法、装置、设备、存储介质和程序产品。所述方法包括:检测主线程当前执行的主函数中是否存在目标异步函数;所述目标异步函数为包括预设的注解信息的异步函数;若存在所述目标异步函数,则启用新的第一线程,并控制所述第一线程执行所述目标异步函数;将所述第一线程的执行结果发送至所述主线程,并控制所述主线程根据所述执行结果执行相应的回调函数。采用本方法能够提升数据处理过程中的吞吐量。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种异步回调方法、装置、设备、存储介质和程序产品。
背景技术
随着互联网技术的不断高速发展,业务规模和业务数据处理时的并发量也在逐步提高,这就要求提升业务数据在处理时的吞吐量,以更好地服务用户。
目前在提升业务吞吐量方面,大多是使用多线程对异步函数进行调用,主要过程是:主线程调用异步函数在异步线程上执行,执行完之后异步线程将执行结果返回给主线程,之后主线程再继续执行回调函数,从而实现异步调用。
然而,上述技术存在整个数据处理过程中的吞吐量较低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升数据处理过程中的吞吐量的异步回调方法、装置、设备、存储介质和程序产品。
第一方面,本申请提供了一种异步回调方法,该方法包括:
检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;
若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;
将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
本实施例中,由于可以通过注解信息快速检测出主线程执行的主函数中是否有目标异步函数,这样可以降低一部分数据处理过程的复杂度,快速实现将目标异步函数采用异步的第一线程执行,提升数据的异步处理效率;另外,在异步的第一线程执行完异步函数之后可以通知主线程,以便主线程在得到通知后再去执行回调函数,而不必一直等待目标异步函数是否执行完成,这样就可以减少主线程在数据处理过程中的等待时间或响应时间,从而可以提升数据处理过程中的吞吐量。
在其中一个实施例中,上述若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数,包括:
若存在目标异步函数,则获取目标异步函数对应的目标注解信息;
若目标注解信息包括第一类型信息,则启用新的第一线程,并控制第一线程执行目标异步函数。
本实施例中,在主函数中存在目标异步函数,且目标异步函数的注解信息是第一类型信息时可以启用新的异步第一线程去执行目标异步函数,这样通过特定类型的注解信息可以快速实现异步线程的启用及执行,进一步提高异步线程的执行效率。
在其中一个实施例中,上述将第一线程的执行结果发送至主线程之前,上述方法还包括:
若目标注解信息包括第二类型信息,则启用新的第二线程;
控制第二线程监听第一线程的执行状态,获得第一线程的执行结果。
本实施例中,在目标异步函数的注解信息是第二类型信息时可以启用新的异步监听线程去监听第一线程的执行情况,这样可以便于及时准确地获知异步线程执行目标异步函数的执行情况,以便及时通知给主线程,提升主线程获知异步函数执行情况的准确性和效率。
在其中一个实施例中,上述第一线程的执行结果包括第一线程执行成功、第一线程执行失败以及第一线程执行超时中的任一种。
本实施例中,通过设置执行超时这一执行结果,可以防止目标异步函数在执行过程中出现阻塞导致过度占用资源的情况,从而可以快速释放资源,提升系统的资源利用率。
在其中一个实施例中,上述控制主线程根据执行结果执行相应的回调函数,包括:
若执行结果为第一线程执行失败,则控制主线程执行执行失败相应的回调函数;
若执行结果为第一线程执行成功,则控制主线程执行执行成功相应的回调函数;
若执行结果为第一线程执行超时,则控制主线程执行执行超时相应的回调函数。
本实施例中,主线程通过异步第一线程不同的执行结果去执行不同的回调函数,这样可以快速满足各种回调场景,提升执行回调过程的适用范围以及执行效率。
在其中一个实施例中,上述检测主线程当前执行的主函数中是否存在目标异步函数,包括:
采用预设的拦截器对主线程当前执行的主函数进行拦截,获得主函数中各子函数的头部字段;
检测各子函数的头部字段中是否存在预设的注解信息;
若一个子函数存在预设的注解信息,则将一个子函数确定为目标异步函数。
本实施例中,通过拦截器对主函数中各子函数的头部字段进行拦截并进行检测,获得其中是否存在注解信息的结果,并将存在注解信息的子函数作为目标异步函数,这样通过注解信息可以较为快速准确地确定出异步函数,进一步提升数据处理过程的效率。
第二方面,本申请还提供了一种异步回调装置,该装置包括:
检测模块,用于检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;
启用模块,用于若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;
回调模块,用于将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
第三方面,本申请还提供了一种计算机设备,计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;
若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;
将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
第四方面,本申请还提供了一种计算机可读存储介质,计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;
若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;
将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
第五方面,本申请还提供了一种计算机程序产品,计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;
若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;
将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
上述异步回调方法、装置、设备、存储介质和程序产品,通过检测主线程当前执行的主函数中是否存在包括预设的注解信息的目标异步函数,并在存在目标异步函数时启用新的第一线程执行目标异步函数,以及将第一线程的执行结果发送至主线程后控制主线程根据执行结果执行相应的回调函数。该方法中,由于可以通过注解信息快速检测出主线程执行的主函数中是否有目标异步函数,这样可以降低一部分数据处理过程的复杂度,快速实现将目标异步函数采用异步的第一线程执行,提升数据的异步处理效率;另外,在异步的第一线程执行完异步函数之后可以通知主线程,以便主线程在得到通知后再去执行回调函数,而不必一直等待目标异步函数是否执行完成,这样就可以减少主线程在数据处理过程中的等待时间或响应时间,从而可以提升数据处理过程中的吞吐量。
附图说明
图1为一个实施例中计算机设备的内部结构图;
图2为一个实施例中异步回调方法的流程示意图;
图3为另一个实施例中异步回调方法的流程示意图;
图4为另一个实施例中异步回调方法的流程示意图;
图5为另一个实施例中异步回调方法的流程示意图;
图6为另一个实施例中异步回调方法的详细流程示意图;
图7为一个实施例中异步回调装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的异步回调方法,可以应用于计算机设备,该计算机设备可以是终端或服务器,以服务器为例,其内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储主线程以及其他线程在数据处理过程中生成的数据以及调用的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种异步回调方法。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
以下先对本申请中涉及的专有名词进行解释说明:
注解:注解是在JDK5时引入的新特性,注解(也被称为元数据)为在代码中添加信息提供了一种形式化的方法,使得可以在稍后某个时刻非常方便地使用这些数据。注解类型定义指定了一种新的类型,一种特殊的接口类型。在关键词interface前加@符号也就是用@interface来区分注解的定义和普通的接口声明。目前大部分框架(如Spring Boot等)都通过使用注解简化了代码并提高的编码效率。
异步函数:也称为异步方法,是一种非阻塞的方法,调用者不必等待方法的返回可以接着放下执行,一般异步方法都是在另一个线程中执行。
回调函数:回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就认为这是回调函数。一般情况下可以理解为函数返回前执行的方法。
反射调用:Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。
并发:并发是系统同时处理多个任务的能力,所谓并发编程就是利用多线程同时处理多个任务的编程技术。
线程:程序执行的最小单元,现在的计算机都支持多线程。
在一个实施例中,如图2所示,提供了一种异步回调方法,以该方法应用于图1中的计算机设备为例进行说明,该方法可以包括以下步骤:
S202,检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数。
在本步骤中,主线程执行的主函数可以是图像数据处理过程中涉及的与图像相关的主函数,或者也可以是语音数据处理过程中涉及的与语音相关的主函数,或者也可以是其他领域的主函数。
一般主函数中会嵌套多个子函数,这些子函数中有一些是需要异步执行的函数,记为异步函数;还有一些是需要同步执行的函数或者具有执行顺序的函数。那么这里对于异步函数,可以预先为其设置相应的注解信息,以后续控制异步函数采用异步的方式进行执行。
这里在预先为异步函数设置注解信息之后,在实际数据处理过程中就可以通过分析主函数中的各子函数是否存在注解信息以及存在时注解信息所包括的具体内容是什么等,获得子函数是否为目标异步函数的结果。
S204,若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数。
在本步骤中,假设某一个子函数存在注解信息,那么可以认为其为目标异步函数,即主函数中存在目标异步函数。那么如果主函数中存在目标异步函数,则说明主函数中存在需要异步执行的子函数,那么就可以启用新的异步线程,记为第一线程,并控制该第一线程去执行目标异步函数,获得该目标异步函数的执行结果。
需要说明的是,启用的异步线程的数量与目标异步函数的数量是相同的,即一个异步线程一般执行一个目标异步函数,若存在多个目标异步函数,那么会启用多个异步线程分别去执行各目标异步函数,这样可以最大限度保证数据异步处理的效率。
S206,将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
在本步骤中,上述在获得第一线程的目标异步函数的执行结果之后,就可以将该目标异步函数的执行结果主动发送至主线程,这样主线程就可以及时获知目标异步函数的执行情况,并据此执行相应的回调函数,完成回调过程。同时这样主线程也不需要一直等待目标异步函数的执行结果,可以在此期间继续执行其他函数,且在收到异步线程的执行结果之后就可以去执行相应结果的回调函数,这样就可以减少主线程的等待时间或响应时间,提升数据吞吐量,进而提升异步数据处理的效率。
同时,本实施例中通过注解信息的方式确定目标异步函数进而采用异步线程进行执行并通知主线程,该方式没有侵入性,对原有系统变动很小,可随时增加或者去除,因此适用大部分数据处理场景。
上述异步回调方法中,通过检测主线程当前执行的主函数中是否存在包括预设的注解信息的目标异步函数,并在存在目标异步函数时启用新的第一线程执行目标异步函数,以及将第一线程的执行结果发送至主线程后控制主线程根据执行结果执行相应的回调函数。该方法中,由于可以通过注解信息快速检测出主线程执行的主函数中是否有目标异步函数,这样可以降低一部分数据处理过程的复杂度,快速实现将目标异步函数采用异步的第一线程执行,提升数据的异步处理效率;另外,在异步的第一线程执行完异步函数之后可以通知主线程,以便主线程在得到通知后再去执行回调函数,而不必一直等待目标异步函数是否执行完成,这样就可以减少主线程在数据处理过程中的等待时间或响应时间,从而可以提升数据处理过程中的吞吐量。
上述实施例中提到了在主函数中存在异步函数时采用异步线程执行异步函数,那么对于具体针对何种异步函数采用异步线程执行的内容,以下实施例就对该过程进行详细说明。
在另一个实施例中,提供了另一种异步回调方法,在上述实施例的基础上,如图3所示,上述S204可以包括以下步骤:
S302,若存在目标异步函数,则获取目标异步函数对应的目标注解信息。
在本步骤中,若主函数中存在目标异步函数,则说明目标异步函数预先设置了注解信息,那么可以获取目标异步函数所包括的目标注解信息。
这里一般在给函数设置注解信息时,通常会设置在函数的设定字段上,那么这里就可以获取该设定字段上的信息,以获得目标注解信息。
S304,若目标注解信息包括第一类型信息,则启用新的第一线程,并控制第一线程执行目标异步函数。
在本步骤中,一般在给函数设置注解信息时,可以根据不同的场景设置不同类型的注解信息。例如有需要指定新线程的注解信息,也有指定监听线程和/或监听内容的注解信息,或者还有其他类型的注解信息。
上述在给主函数中的子函数预先设置注解信息时,可以具体设置为两个类型的注解信息,其中第一类型信息可以是@Async,可以用于指定新的线程,第二类型信息可以是@FutureCallback,可以用于指定监听的函数以及函数的相关配置信息。
示例地,上述第一类型信息的相关注解参数可以参见下述表1所示:
表1
参数名称 | 作用 | 示例 |
value | 指定使用的线程池 | @Async("taskExecutor") |
/ | / | / |
在上述表1示例的基础上可知,第一类型信息可以指定函数所使用的线程池,即为函数设置对应的新的线程,其所代表的注解信息指的是若函数包括这类注解信息,则需要该函数新建一个线程来执行函数。
上述第二类型信息的相关注解参数可以参见下述表2所示:
表2
参数名称 | 作用 | 示例 |
Value | 指定回调函数监听的方法 | @Future Callback("AsyncFunc") |
type | 回调类型:成功,失败,超时 | @Future Callback type="success") |
timeout | 超时时间,默认60s | @Future Callback(timeout="60") |
/ | / | / |
在上述表2示例的基础上可知,第二类型信息可以指定监听的具体函数名称,以及回调的函数的类型,回调函数的相关配置信息等内容。其所代表的注解信息指的是若函数包括这类注解信息,则需要监听函数及其执行过程。
在预先为主函数中的子函数设置好注解信息,且上述获得目标异步函数包括的目标注解信息之后,可以对目标注解信息进行分析,确定其中注解信息所包括的具体内容,若包括第一类型信息,则就启用新的异步线程,记为第一线程,并采用该异步的第一线程执行该目标异步函数,获得异步线程的执行结果,实现异步函数采用异步线程执行,提升数据处理效率。
在上述将异步线程的执行结果发送至主线程之前,为了便于及时获知异步线程的执行情况,作为可选的实施例,参见图4所示,上述方法还可以包括以下步骤:
S402,若目标注解信息包括第二类型信息,则启用新的第二线程。
S404,控制第二线程监听第一线程的执行状态,获得第一线程的执行结果。
也就是说,在上述对目标注解信息进行分析时,若目标注解信息中也包括第二类型信息,则可以在目标异步函数的异步第一线程执行过程中,启用新的监听线程,记为第二线程。并采用该第二线程去监听第一线程中目标异步函数的执行情况,获得的目标异步函数的执行情况,最终也可以将该执行情况发送给主线程。
需要说明的是,同一个目标注解信息中可以同时包括第一类型信息和第二类型信息,且一般第一类型信息在第二类型信息之前,即一般先判断出存在第一类型信息且采用异步线程进行执行了,后续才能采用监听线程进行监听。
本实施例中,在主函数中存在目标异步函数,且目标异步函数的注解信息是第一类型信息时可以启用新的异步第一线程去执行目标异步函数,这样通过特定类型的注解信息可以快速实现异步线程的启用及执行,进一步提高异步线程的执行效率。另外,在目标异步函数的注解信息是第二类型信息时可以启用新的异步监听线程去监听第一线程的执行情况,这样可以便于及时准确地获知异步线程执行目标异步函数的执行情况,以便及时通知给主线程,提升主线程获知异步函数执行情况的准确性和效率。
以下实施例对异步第一线程执行目标异步函数的执行情况进行说明。在上述实施例的基础上,上述第一线程的执行结果包括第一线程执行成功、第一线程执行失败以及第一线程执行超时中的任一种。
其中,执行成功表示异步第一线程执行目标异步函数时执行成功,获得成功的结果;执行失败表示异步第一线程执行目标异步函数时执行失败,获得失败的结果;执行超时表示异步第一线程执行目标异步函数的时间超过设定时长仍然没有获得执行结果(这里不论执行结果是失败或成功,只要有结果即可),例如上述表2中提到的60s,那么就可以表明异步第一线程执行超时,其对应的执行结果就是执行超时。
这里通过设置执行超时这一执行结果,可以防止目标异步函数在执行过程中出现阻塞导致过度占用资源的情况,从而可以快速释放资源,提升系统的资源利用率。
基于上述异步第一线程不同的执行结果,以下实施例针对上述不同的执行结果主线程如何执行回调函数的过程进行说明。
在另一个实施例中,提供了另一种异步回调方法,在上述实施例的基础上,上述S206可以包括以下步骤:
若执行结果为第一线程执行失败,则控制主线程执行执行失败相应的回调函数。若执行结果为第一线程执行成功,则控制主线程执行执行成功相应的回调函数。若执行结果为第一线程执行超时,则控制主线程执行执行超时相应的回调函数。
这里针对不同的执行结果,可以预先设置不同类型的回调函数,例如上述表2中的回调类型,包括成功、失败以及超时,三种不同的回调类型分别具有各自对应的回调函数,主线程可以基于异步第一线程不同的执行结果执行不同的回调函数,完成回调过程。
当然这里的回调类型只是示例,在实际情况中针对不同的执行结果还可以针对性地设置相应的回调类型及对应的回调函数。
本实施例中,主线程通过异步第一线程不同的执行结果去执行不同的回调函数,这样可以快速满足各种回调场景,提升执行回调过程的适用范围以及执行效率。
上述实施例中提到了在主函数中检测目标异步函数的简单过程,以下实施例就对该过程如何检测的具体过程进行详细说明。
在另一个实施例中,提供了另一种异步回调方法,在上述实施例的基础上,如图5所示,上述S202可以包括以下步骤:
S502,采用预设的拦截器对主线程当前执行的主函数进行拦截,获得主函数中各子函数的头部字段。
在本步骤中,拦截器可以自开机启动并一直运行,在主线程在执行主函数时就可以对主函数中的各子函数进行拦截,获得各子函数的头部字段。示例地,假设一般各子函数的头部2个字节是用来存储相关注解信息或其他配置信息的,那么这里就可以截取每个子函数头部的2个字节所在的字段。
S504,检测各子函数的头部字段中是否存在预设的注解信息。
在本步骤中,在获得各子函数的头部字段之后,可以对各头部字段中的内容进行解析,获得其中是否存在注解信息的结果,以及在存在注解信息时获得具体的注解信息的内容。
S506,若一个子函数存在预设的注解信息,则将一个子函数确定为目标异步函数。
在本步骤中,在获得各个子函数是否存在注解信息的结果之后,若某一个子函数存在注解信息,或者某一个子函数存在设定的注解信息,则可以将该子函数作为目标异步函数,以便后续采用异步线程执行。
本实施例中,通过拦截器对主函数中各子函数的头部字段进行拦截并进行检测,获得其中是否存在注解信息的结果,并将存在注解信息的子函数作为目标异步函数,这样通过注解信息可以较为快速准确地确定出异步函数,进一步提升数据处理过程的效率。
以下给出一个详细的实施例来对本申请的技术方案进行说明,在上述实施例的基础上,参见图6所示,该方法可以包括以下步骤:
S1,采用预设的拦截器对主线程当前执行的主函数进行拦截,获得主函数中各子函数的头部字段;
S2,检测各子函数的头部字段中是否存在预设的注解信息;
S3,若一个子函数存在预设的注解信息,则将一个子函数确定为目标异步函数;
S4,若存在目标异步函数,则获取目标异步函数对应的目标注解信息;
S5,若目标注解信息包括第一类型信息(例如图中的@Async),则启用新的第一线程,并控制第一线程执行目标异步函数;
S6,若目标注解信息包括第二类型信息(例如图中的@Future Callbac),则启用新的第二线程;
S7,控制第二线程监听第一线程的执行状态,获得第一线程的执行结果;第一线程的执行结果包括第一线程执行成功、第一线程执行失败以及第一线程执行超时中的任一种;
S8,若执行结果为第一线程执行失败,则控制主线程执行执行失败相应的回调函数;若执行结果为第一线程执行成功,则控制主线程执行执行成功相应的回调函数;若执行结果为第一线程执行超时,则控制主线程执行执行超时相应的回调函数。
需要说明的是,本申请实施例在实现多线程并发执行异步函数时,主要采用的是多线程以及注解信息的反射功能等技术,这样可以较为容易地实现异步执行多个函数或方法,且通过监听结果以通知给主线程,使得可以提高主线程数据处理的吞吐量。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的异步回调方法的异步回调装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个异步回调装置实施例中的具体限定可以参见上文中对于异步回调方法的限定,在此不再赘述。
在一个实施例中,如图7所示,提供了一种异步回调装置,包括:检测模块、启用模块和回调模块,其中:
检测模块,用于检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;
启用模块,用于若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;
回调模块,用于将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
在另一个实施例中,提供了另一种异步回调装置,在上述实施例的基础上,上述启用模块,可以包括:
信息获取单元,用于若存在目标异步函数,则获取目标异步函数对应的目标注解信息;
启用单元,用于若目标注解信息包括第一类型信息,则启用新的第一线程,并控制第一线程执行目标异步函数。
可选的,在回调模块将第一线程的执行结果发送至主线程之前,上述装置还包括:
监听线程启用模块,用于若目标注解信息包括第二类型信息,则启用新的第二线程;
监听模块,用于控制第二线程监听第一线程的执行状态,获得第一线程的执行结果。
在另一个实施例中,上述第一线程的执行结果包括第一线程执行成功、第一线程执行失败以及第一线程执行超时中的任一种。
可选的,在上述实施例的基础上,上述回调模块,具体用于若执行结果为第一线程执行失败,则控制主线程执行执行失败相应的回调函数;若执行结果为第一线程执行成功,则控制主线程执行执行成功相应的回调函数;若执行结果为第一线程执行超时,则控制主线程执行执行超时相应的回调函数。
在另一个实施例中,提供了另一种异步回调装置,在上述实施例的基础上,上述检测模块,包括:
拦截单元,用于采用预设的拦截器对主线程当前执行的主函数进行拦截,获得主函数中各子函数的头部字段;
检测单元,用于检测各子函数的头部字段中是否存在预设的注解信息;
确定单元,用于若一个子函数存在预设的注解信息,则将一个子函数确定为目标异步函数。
上述异步回调装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若存在目标异步函数,则获取目标异步函数对应的目标注解信息;若目标注解信息包括第一类型信息,则启用新的第一线程,并控制第一线程执行目标异步函数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若目标注解信息包括第二类型信息,则启用新的第二线程;控制第二线程监听第一线程的执行状态,获得第一线程的执行结果。
在一个实施例中,上述第一线程的执行结果包括第一线程执行成功、第一线程执行失败以及第一线程执行超时中的任一种。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若执行结果为第一线程执行失败,则控制主线程执行执行失败相应的回调函数;若执行结果为第一线程执行成功,则控制主线程执行执行成功相应的回调函数;若执行结果为第一线程执行超时,则控制主线程执行执行超时相应的回调函数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
采用预设的拦截器对主线程当前执行的主函数进行拦截,获得主函数中各子函数的头部字段;检测各子函数的头部字段中是否存在预设的注解信息;若一个子函数存在预设的注解信息,则将一个子函数确定为目标异步函数。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若存在目标异步函数,则获取目标异步函数对应的目标注解信息;若目标注解信息包括第一类型信息,则启用新的第一线程,并控制第一线程执行目标异步函数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若目标注解信息包括第二类型信息,则启用新的第二线程;控制第二线程监听第一线程的执行状态,获得第一线程的执行结果。
在一个实施例中,上述第一线程的执行结果包括第一线程执行成功、第一线程执行失败以及第一线程执行超时中的任一种。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若执行结果为第一线程执行失败,则控制主线程执行执行失败相应的回调函数;若执行结果为第一线程执行成功,则控制主线程执行执行成功相应的回调函数;若执行结果为第一线程执行超时,则控制主线程执行执行超时相应的回调函数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
采用预设的拦截器对主线程当前执行的主函数进行拦截,获得主函数中各子函数的头部字段;检测各子函数的头部字段中是否存在预设的注解信息;若一个子函数存在预设的注解信息,则将一个子函数确定为目标异步函数。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
检测主线程当前执行的主函数中是否存在目标异步函数;上述目标异步函数为包括预设的注解信息的异步函数;若存在目标异步函数,则启用新的第一线程,并控制第一线程执行目标异步函数;将第一线程的执行结果发送至主线程,并控制主线程根据执行结果执行相应的回调函数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若存在目标异步函数,则获取目标异步函数对应的目标注解信息;若目标注解信息包括第一类型信息,则启用新的第一线程,并控制第一线程执行目标异步函数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若目标注解信息包括第二类型信息,则启用新的第二线程;控制第二线程监听第一线程的执行状态,获得第一线程的执行结果。
在一个实施例中,上述第一线程的执行结果包括第一线程执行成功、第一线程执行失败以及第一线程执行超时中的任一种。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若执行结果为第一线程执行失败,则控制主线程执行执行失败相应的回调函数;若执行结果为第一线程执行成功,则控制主线程执行执行成功相应的回调函数;若执行结果为第一线程执行超时,则控制主线程执行执行超时相应的回调函数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
采用预设的拦截器对主线程当前执行的主函数进行拦截,获得主函数中各子函数的头部字段;检测各子函数的头部字段中是否存在预设的注解信息;若一个子函数存在预设的注解信息,则将一个子函数确定为目标异步函数。
需要说明的是,本申请所涉及的数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经过各方充分授权的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种异步回调方法,其特征在于,所述方法包括:
检测主线程当前执行的主函数中是否存在目标异步函数;所述目标异步函数为包括预设的注解信息的异步函数;
若存在所述目标异步函数,则启用新的第一线程,并控制所述第一线程执行所述目标异步函数;
将所述第一线程的执行结果发送至所述主线程,并控制所述主线程根据所述执行结果执行相应的回调函数。
2.根据权利要求1所述的方法,其特征在于,所述若存在所述目标异步函数,则启用新的第一线程,并控制所述第一线程执行所述目标异步函数,包括:
若存在所述目标异步函数,则获取所述目标异步函数对应的目标注解信息;
若所述目标注解信息包括第一类型信息,则启用新的第一线程,并控制所述第一线程执行所述目标异步函数。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一线程的执行结果发送至所述主线程之前,所述方法还包括:
若所述目标注解信息包括第二类型信息,则启用新的第二线程;
控制所述第二线程监听所述第一线程的执行状态,获得所述第一线程的执行结果。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一线程的执行结果包括所述第一线程执行成功、所述第一线程执行失败以及所述第一线程执行超时中的任一种。
5.根据权利要求4所述的方法,其特征在于,所述控制所述主线程根据所述执行结果执行相应的回调函数,包括:
若所述执行结果为所述第一线程执行失败,则控制所述主线程执行所述执行失败相应的回调函数;
若所述执行结果为所述第一线程执行成功,则控制所述主线程执行所述执行成功相应的回调函数;
若所述执行结果为所述第一线程执行超时,则控制所述主线程执行所述执行超时相应的回调函数。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述检测主线程当前执行的主函数中是否存在目标异步函数,包括:
采用预设的拦截器对主线程当前执行的主函数进行拦截,获得所述主函数中各子函数的头部字段;
检测各所述子函数的头部字段中是否存在预设的注解信息;
若一个子函数存在预设的注解信息,则将所述一个子函数确定为所述目标异步函数。
7.一种异步回调装置,其特征在于,所述装置包括:
检测模块,用于检测主线程当前执行的主函数中是否存在目标异步函数;所述目标异步函数为包括预设的注解信息的异步函数;
启用模块,用于若存在所述目标异步函数,则启用新的第一线程,并控制所述第一线程执行所述目标异步函数;
回调模块,用于将所述第一线程的执行结果发送至所述主线程,并控制所述主线程根据所述执行结果执行相应的回调函数。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310186112.XA CN116450341A (zh) | 2023-03-01 | 2023-03-01 | 异步回调方法、装置、设备、存储介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310186112.XA CN116450341A (zh) | 2023-03-01 | 2023-03-01 | 异步回调方法、装置、设备、存储介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116450341A true CN116450341A (zh) | 2023-07-18 |
Family
ID=87126336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310186112.XA Pending CN116450341A (zh) | 2023-03-01 | 2023-03-01 | 异步回调方法、装置、设备、存储介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116450341A (zh) |
-
2023
- 2023-03-01 CN CN202310186112.XA patent/CN116450341A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090276482A1 (en) | Automated offloading of user-defined functions to a high performance computing system | |
US7567257B2 (en) | Partition-based undo of partitioned object graph | |
CN110990132B (zh) | 异步任务处理方法、装置、计算机设备和存储介质 | |
CN110908837B (zh) | 应用程序异常处理方法、装置、电子设备及存储介质 | |
CN112286594B (zh) | 对象序列化和反序列化方法及设备、电子设备和介质 | |
CN112766470B (zh) | 特征数据处理方法、指令序列生成方法、装置及设备 | |
CN110908644B (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN116719646A (zh) | 热点数据处理方法、装置、电子装置和存储介质 | |
CN116450341A (zh) | 异步回调方法、装置、设备、存储介质和程序产品 | |
CN116185592A (zh) | 移动应用的业务处理方法及装置、存储介质、计算机设备 | |
US5632036A (en) | System and method for processing interprocess signals | |
CN113326311A (zh) | 一种数据转换方法及装置 | |
CN115730016B (zh) | 数据同步方法、系统、装置、计算机设备和存储介质 | |
CN115190177B (zh) | 请求处理方法、装置、计算机设备、存储介质和程序产品 | |
CN113806504B (zh) | 一种多维度报表数据计算方法、装置和计算机设备 | |
CN117311730A (zh) | 用户信息处理方法、装置、计算机设备和存储介质 | |
US10387163B2 (en) | Operating on data streams using chained hardware instructions | |
CN116860480A (zh) | 调用请求处理方法、装置、计算机设备和存储介质 | |
CN117667421A (zh) | 分布式锁的实现方法、装置、计算机设备和存储介质 | |
CN118158094A (zh) | 配置信息处理方法、装置、网络设备和存储介质 | |
CN116860403A (zh) | 异步任务生成方法和异步任务处理方法 | |
CN116204291A (zh) | 任务处理方法、装置、计算机设备和存储介质 | |
CN117435367A (zh) | 用户行为处理方法、装置、设备、存储介质和程序产品 | |
CN117455501A (zh) | 请求处理方法、装置、计算机设备和存储介质 | |
CN115328942A (zh) | 业务执行方法、系统、介质及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |