您能告诉我Spring @Async
ThreadPoolTaskExecutor
的默认参数是什么,还是我自己找到一个默认参数?
maxPoolSize,corePoolSize和queueCapcity的默认值是什么?
我应该重写它们以改善我的应用程序还是使用默认值就可以了?
答案 0 :(得分:2)
我假设您想在春季使用@EnableAsync
(javadoc)注释来支持异步任务执行。
在这种情况下,文档说明以下内容:
默认情况下,Spring将搜索关联的线程池定义:
上下文中唯一的org.springframework.core.task.TaskExecutor
bean,否则,否则命名为{task1ecutor“的java.util.concurrent.Executor
bean。
如果两者都不可解决,则将使用org.springframework.core.task.SimpleAsyncTaskExecutor
处理异步方法调用。
现在,如果您想提供自己的自定义,则可以定义(实现)AsyncConfigurer
(javadoc),该方法基本上可以定义执行程序和异常处理程序(超出此问题的范围)
答案 1 :(得分:1)
关于npx
的实现。您可以在其github存储库中进行检查。 ThreadPoolTaskExecutor
npx tsc --version
答案 2 :(得分:0)
根据Spring源代码@EnableAsync
的注释按SimpleAsyncTaskExecutor
进行配置,并且该配置不会重复使用线程,并且默认情况下随时都不会限制使用的线程数。
在提交作业的进程和线程池之间有一个队列。如果所有线程都被占用,则作业将仅排队。如果队列已满并且线程也被占用,则新任务将被拒绝。您可以选择几种拒绝策略(例如,呼叫者运行)。
如果您要查找真正的池,请查看SimpleThreadPoolTaskExecutor
和ThreadPoolTaskExecutor
答案 3 :(得分:0)
@Async 使用的任务执行器的 bean 名称是 applicationTaskExecutor
applicationTaskExecutor
的属性在 TaskExecutionProperties
private int queueCapacity = Integer.MAX_VALUE;
private int coreSize = 8;
private int maxSize = Integer.MAX_VALUE;