Spring Boot中@Async的作用
Posted xuzhujack
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot中@Async的作用相关的知识,希望对你有一定的参考价值。
在Spring中,@Async这个注解用于标记的异步的方法。方法上一旦标记了这个方法,当其它线程调用这个方法时,就会开启一个新的线程去异步处理业务逻辑。
此注解的使用说明:
1、此注解可以用在方法上,也可以用在类上(如果用在类上,这个类中的所有的方法就是异步的)
2、使用此注解的方法的类对象,需要是spring管理下的bean对象
3、程序主类或此注解的主类上,需要开启启用异步配置,配置上@EnableAsync注解
以Spring boot 为例,启动类中增加@EnableAsync,
@EnableAsync
@SpringBootApplication
public class ManageApplication
异步类:
@Component
public class MyAsyncTask
@Async
public void asyncCpsItemImportTask(Long platformId, String jsonList)
上面的配置会启用默认的执行器,异步执行指定的方法。
在业务场景中,有时需要使用自己定义的执行器来跑异步的业务逻辑,那该怎么办呢?
上面的改造后的代码如下:
@EnableAsync
@SpringBootApplication
public class ManageApplication
@Bean("MyExecutor")
public TaskExecutor workExecutor1()
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setThreadNamePrefix("parseMyTask");
threadPoolTaskExecutor.setCorePoolSize(10);
threadPoolTaskExecutor.setMaxPoolSize(30);
threadPoolTaskExecutor.setQueueCapacity(100);
threadPoolTaskExecutor.afterPropertiesSet();
return threadPoolTaskExecutor;
异步类:
@Component
public class MyAsyncTask
@Async("MyExecutor")
public void asyncCpsItemImportTask(Long platformId, String jsonList)
以上是关于Spring Boot中@Async的作用的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 揭秘与实战 服务器篇 - 其他内嵌服务器 发表于 2017-01-03 | Spring框架 | Spri
Spring boot 2 + log detail 日志不起作用,有Logback、Hibernate + Weblogic