当前位置: 首页 > 网络应用技术

使用@ASYNC在Spring Boot中实现异步调用,以加快任务的执行!

时间:2023-03-08 10:32:51 网络应用技术

  什么是“异步调用”?“异步调用”对应于“同步调用”。同步调用索引程序是按照定义顺序执行的。每条过程都必须等待完成上一行的执行。异步调用程序的索引是按顺序执行的,并且不会等待异步调用而无需等待异步调用。如果语句返回结果,则执行后续程序。

  以下是一个简单的示例,可以理解什么是同步调用:

  定义任务类,创建三个处理功能以模拟三个执行任务的操作,并且操作会随机消耗时间(在10秒内)

  在单元测试用例中,将任务对象注入,并在测试用例中执行三个功能。

  执行单元测试,您可以看到以下输出:

  任务I.任务II以及任务的三个顺序执行,换句话说,Dotaskone,DotaskTwo和DotaskThree的三个函数的执行。

  尽管上述同时呼叫已成功执行三个任务,但可以看出,执行时间相对较长。如果这三个任务本身之间没有依赖性,则可以同时执行同步呼叫,在执行效率方面很差。它可以通过异步调用同时考虑。

  在Spring Boot中,我们只需要使用注释即可简单地将原始同步函数更改为异步函数。任务类已更改为以下模式:

  为了启用@Async注释,有必要在Spring Boot的主要程序中配置@enableasync,如下所示:

  目前,您可以反复执行单元测试,并且您可能会遇到各种结果,例如:

  注意:修改后的功能不应定义为静态类型,因此异步调用不会生效

  为了正常结束,假设我们需要计算三个任务消耗多少时间消耗。

  那么,我们如何判断是否执行了以上三个异步调用?我们需要使用异步调用的结果,就像以下方式转换功能的方法一样:

  在将其他两个异步函数转换为上述方式之后,让我们转换下面的测试用例,以便测试在等待完成三个异步调用后将执行其他事情。

  看看我们做出了什么变化:

  执行上述单元测试后,您可以看到以下结果:

  可以看出,通过异步呼叫,任务与任务(两个和三)结合执行,并有效地减少了程序的总操作时间。

  本文中的完整项目可以在仓库中的目录中查看该项目:

  如果您认为这篇文章很好,欢迎支持,您的关注是我的动力!

  欢迎来到我的公共帐户:程序猿DD,分享干货和外面思考!