注解@EnableAsync使用注意项
注解@EnableAsync使用注意项
以异步性能优化为目的,反而带来的整体业务不可用的结果,是不可取的一种优化。
Spring Boot默认用于异步任务的配置参数其中两项如下:
queueCapacity:缓冲队列的容量,默认为INT的最大值(2的31次方-1)。
maxSize:允 许的最大线程数,默认为INT的最大值(2的31次方-1)。
其默认使用的是 SimpleAsyncTaskExecutor。
而SimpleAsyncTaskExecutor 不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。
并发大的时候会产生严重的性能问题。
真正使用的时候,需要对异步任务的执行线程池做一些基础的配置,以防止出现内存溢出导致不可用的问题。
配置文件配置有一下参数:
#线程池创建时的初始化线程数,默认为8
spring.task.execution.pool.core-size=2
#线程池的最大线程数,默认为int最大值
spring.task.execution.pool.max-size=5
#用来缓冲执行任务的队列,默认为int最大值
spring.task.execution.pool.queue-capacity=10
#线程终止前允许保持空闲的时间
spring.task.execution.pool.keep-alive=60s
#是否允许核心线程超时
spring.task.execution.pool.allow-core-thread-timeout=true
#是否等待剩余任务完成后才关闭应用
spring.task.execution.shutdown.await-termination=false
#等待剩余任务完成的最大时间
spring.task.execution.shutdown.await-termination-period=
#线程名的前缀,设置好了之后可以方便我们在日志中查看处理任务所在的线程池
spring.task.execution.thread-name-prefix=task-
参考网址 https://www.51cto.com/article/682634.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!