为什么 Spring 提供自己的任务执行器?

Why do Spring offer its own task executors?

为什么我们需要 AsyncTaskExecutor(及其实现,即 SimpleAsyncTaskExecutor),而 Java 已经提供了这些(通过 Executors)?

TaskExecutor 基本上是对标准 JDK 的 Executor.

的 Spring 抽象

Equivalent to JDK 1.5's java.util.concurrent.Executor interface; extending it now in Spring 3.0, so that clients may declare a dependency on an Executor and receive any TaskExecutor implementation.

The Javadoc of org.springframework.core.task.TaskExecutor

Spring 伙计们建立自己的生态系统并关心它如何与标准 JDK 方式共存。通常,这些实现更具竞争力,API 更丰富且面向 Spring(在 Spring 框架本身中积极使用)。

SimpleAsyncTaskExecutorAsyncTaskExecutor 的实现,在 运行 @Async 方法时默认使用。但是,您可以提供自己的 TaskExecutor 来代替默认的。 Spring之所以这样做是为了给你更多的灵活性。