SpringBoot的@EnableAsync和@Async注解分析
更新时间:2023年07月18日 09:57:08 作者:七月J
这篇文章主要介绍了SpringBoot的@EnableAsync和@Async注解分析,Spring Boot是一个快速开发框架,可以帮助开发人员快速构建基于Spring的应用程序,需要的朋友可以参考下
前言
使用多线程,往往是创建Thread
,或者是实现Runnable
接口,用到线程池得时候需要创建Executors
,通过使用@EnableAsync
注解就可以使用多线程,@Async
注解加在线程任务的方法上 可以异步执行任务。使用 ThreadPoolTaskExecutor
就可以使用线程池。
定义配置类
这个配置类需要实现AsyncConfigurer
接口,并实现他的方法
- 异步线程的提供者,在里面配置自动执行的东西,如线程池参数。
- 线程异常的处理。
@Configuration @EnableAsync public class ThreadPoolConfig implements AsyncConfigurer { private static final Logger log = LoggerFactory.getLogger(ThreadPoolConfig.class); @Autowired private ThreadPoolParamsConfig threadPoolParamsConfig; @Override @Bean("taskExecutor") public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(threadPoolParamsConfig.getCorePoolSize()); executor.setMaxPoolSize(threadPoolParamsConfig.getMaxPoolSize()); executor.setQueueCapacity(threadPoolParamsConfig.getQueueCapacity()); executor.setKeepAliveSeconds(threadPoolParamsConfig.getKeepAliveSeconds()); executor.setThreadNamePrefix("authority-manage-thread-"); executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); executor.initialize(); return executor; } @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return (ex,method,params) -> { log.error("异常信息:{}",ex.getMessage()); log.error("exception method:{}",method.getName()); }; } }
线程池配置类
@Data @Component @ConfigurationProperties(prefix = "task.pool") public class ThreadPoolParamsConfig { /** * 核心线程数 */ private int corePoolSize; /** * 最大线程数 */ private int maxPoolSize; /** * 线程空闲空间 */ private int keepAliveSeconds; /** * 任务队列容量 */ private int queueCapacity; }
调用异步线程任务
/** * 测试异步创建任务 * @return */ public Result createIsueTask() { inspPlanRlnToolService.asynsBatchCreateIsueTasks(); return Result.ok(); }
线程任务类
/** * 异步创建任务 */ @Async("taskExecutor") @Override public void asynsBatchCreateIsueTasks() { log.info("这是一个异步任务"); }
到此这篇关于SpringBoot的@EnableAsync和@Async注解分析的文章就介绍到这了,更多相关SpringBoot的@EnableAsync内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
SpringBoot3集成ElasticSearch的方法详解
Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,适用于各种数据类型,数字、文本、地理位置、结构化数据、非结构化数据,本文给大家详解介绍了SpringBoot3集成ElasticSearch的方法,需要的朋友可以参考下2023-08-08MyBatis在insert插入操作时返回主键ID的配置(推荐)
这篇文章主要介绍了MyBatis在insert插入操作时返回主键ID的配置的相关资料,需要的朋友可以参考下2017-10-10spring boot实现上传图片并在页面上显示及遇到的问题小结
最近在使用spring boot搭建网站的过程之中遇到了有点小问题,最终解决方案是在main目录下新建了一个webapp文件夹,并且对其路径进行了配置,本文重点给大家介绍spring boot实现上传图片并在页面上显示功能,需要的朋友参考下吧2017-12-12
最新评论