Spring @Async 中的默认值是什么?

Pav*_*vel 5 java spring threadpoolexecutor spring-async

你能告诉我 Spring 的默认参数是什么,@Async ThreadPoolTaskExecutor或者我怎么能找到我自己的参数?

maxPoolSize、corePoolSize 和 queueCapcity 的默认值是什么?

我应该覆盖它们以改进我的应用程序还是使用默认值就可以了?

Mar*_*nik 9

我假设您想使用@EnableAsyncjavadoc)注释来支持 Spring 中的异步任务执行。

在这种情况下,文档说明如下:

默认情况下,Spring 将搜索关联的线程池定义:要么是org.springframework.core.task.TaskExecutor上下文中的唯一 bean,要么java.util.concurrent.Executor是名为“taskExecutor”的 bean。

如果两者都不可解析,org.springframework.core.task.SimpleAsyncTaskExecutor则将使用 a 来处理异步方法调用。

现在,如果您想提供自己的定制,您可以定义(实现)一个AsyncConfigurerjavadoc),它基本上允许定义执行器和异常处理程序(超出了这个问题的范围)。

  • 是的,但是默认值是什么?是否值得为 @Async 定义自定义配置? (2认同)

Tra*_* Ho 5

关于ThreadPoolTaskExecutor的实现。您可以在他们的 github 存储库中查看。线程池任务执行器

private int corePoolSize = 1;

private int maxPoolSize = Integer.MAX_VALUE;

private int queueCapacity = Integer.MAX_VALUE;
Run Code Online (Sandbox Code Playgroud)