注解@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
标签:EnableAsync,task,spring,默认,blog,线程,注意,注解,execution From: https://www.cnblogs.com/subtlman/p/17046730.html