springboot之@Async实现异步

据说springboot有个注解@Async可以实现异步调用,然后我来用用看!

增加一个maven新模块:

增加如下依赖,不增加配置:

然后我们写一个异步调用的服务:

这里需要实现异步的功能,还需要在Application加上注解@EnableAsync,类似于Spring的<task:*> XML命名空间中的功能。

然后我们写一个测试用例

日志输出:

从上面的日志中,我们可以看到调用是异步执行的,就是使用一下这个功能,实际上使用也不用这么复杂吧,使用的Future<String>,我们在新版本的JDK中,还可以使用其他的方式!

我们可以看到在EnableAsync注解中有@Import AsyncConfigurationSelector.class(用来导入一个或多个class,这些类会注入到spring容器中,或者配置类,配置类里面定义的bean都会被spring容器托管)。

@EnableAsync注释启动了Spring在后台线程池中运行@Async方法的能力。该类还自定义使用的Executor。在我们的示例中,我们希望将并发线程数限制为2并将队列大小限制为500.您可以调整更多内容。默认情况下,使用SimpleAsyncTaskExecutor。

 文档里写了@Async有两个使用的限制

  • 它必须仅适用于public方法
  • 在同一个类中调用异步方法将无法正常工作(self-invocation)

下节再续!

有什么讨论的内容,可以加我公众号:

猜你喜欢

转载自blog.csdn.net/woshiyexinjie/article/details/82422373