springboot 中如何配置线程池
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,springboot 中如何配置线程池,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.添加configimport lombok.ex
千家信息网最后更新 2025年12月03日springboot 中如何配置线程池
springboot 中如何配置线程池,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1.添加config
import lombok.extern.slf4j.Slf4j;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.Executor;import java.util.concurrent.ThreadPoolExecutor;@Configuration@EnableAsync@Slf4jpublic class ExecutorConfig { @Bean("taskExecutor") public Executor asyncServiceExecutor() { log.info("---创建线程池---"); ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); //核心线程数 executor.setCorePoolSize(10); //最大线程数 executor.setMaxPoolSize(20); //队列大小 executor.setQueueCapacity(200); //配置线程池中的线程的名称前缀 executor.setThreadNamePrefix("async-method-"); /* rejection-policy:当pool已经达到max size的时候,如何处理新任务 线程池对拒绝任务的处理策略:此处采用了CallerRunsPolicy策略, 当线程池没有处理能力的时候,该策略会直接在execute方法的调用线程中运行被拒绝的任务; 如果执行程序已被关闭,则会丢弃该任务 */ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean executor.setWaitForTasksToCompleteOnShutdown(true); //设置线程池中任务的等待时间,如果超过这个时候还没有销毁就强制销毁,以确保应用最后能够被关闭,而不是阻塞住 executor.setAwaitTerminationSeconds(60); //执行初始化 executor.initialize(); return executor; }}2.定义异步方法
/** * 异步调用测试接口 */public interface IAsyncService { void testAsyncMethod() throws Exception;}@Service@Slf4jpublic class AsyncServiceImpl implements IAsyncService { //此处taskExecutor和 config中@bean保持一致 @Async("taskExecutor") @Override public void testAsyncMethod() throws Exception{ log.info("异步方法,走起---"); long start = System.currentTimeMillis(); Thread.sleep(5000); long end = System.currentTimeMillis(); log.info("异步方法,结束:" + (end - start) + "毫秒"); }}3.测试
public Result> test() { System.out.println("1====================="); System.out.println("2====================="); try { asyncService.testAsyncMethod(); } catch (Exception e) { e.printStackTrace(); } System.out.println("3====================="); System.out.println("4====================="); return Result.ok("测试成功!"); }控制台打印如下:
备注:
如果发现启动项目报错:
解决方案:yml中添加配置
spring: main: allow-bean-definition-overriding: true
看完上述内容,你们掌握springboot 中如何配置线程池的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
线程
任务
方法
配置
时候
策略
测试
内容
更多
问题
处理
最大
一致
成功
束手无策
为此
前缀
原因
名称
备注
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
武汉公共信息网络安全监察
网络安全科技陈列馆
时代网络技术北京有限公司
联想服务器大概的使用年限
方舟生存找不到服务器
苹果app服务器维护了吗
ctf网络安全大赛规则
原神oppo是什么服务器
非自然网络安全威胁
网络安全可信吗
橙服务器
公众号模板消息数据库
java软件开发如何外包
苏州做分布式存储服务器
一台服务器能做两个raid
邮件无法验证服务器身份是什么意思
pubg怎么防止服务器掉线
gt人脸识别数据库是啥
两个数据库同步数据的安全
会淘网络技术有限公司
防御ddos服务器
2019华为网络安全工程师待遇
网络技术售后服务方案
网络安全漏洞主要有哪些
数据库和程序哪个难
北京网络安全技能竞赛
上海新型网络技术节能规范
资金盘软件开发重庆
全网铃音网络技术中心
计算与服务器 时间差