Невозможно запустить Spring `@Async` в выделенном пуле потоков.JAVA

Программисты JAVA общаются здесь
Anonymous
Невозможно запустить Spring `@Async` в выделенном пуле потоков.

Сообщение Anonymous »

Я ожидал, что приведенный ниже код потратит 1 секунду на приведенный ниже тест, но это заняло 5 секунд. Я запустил его с помощью ChatGPT, и он также не обнаружил никаких проблем. В чем может быть проблема, мешающая Spring Boot запускать каждый вызов метода возврата Future в разных потоках?

Код: Выделить всё

@SpringJUnitConfig(SpringAsyncTest.MyTestConfig::class)
class SpringAsyncTest {

@Autowired
lateinit var sut: MySpecialBean

@TestConfiguration()
class MyTestConfig {
@Bean(name = ["myThreadPoolExecutor"])
fun asyncExecutor(): ThreadPoolTaskExecutor {
val executor = ThreadPoolTaskExecutor()
executor.corePoolSize = 10
executor.queueCapacity = 2000
executor.initialize()
return executor
}

@Bean
fun sut(): MySpecialBean = MySpecialBean()
}
@Test
@Throws(InterruptedException::class, ExecutionException::class)
fun testSpringAsync() {
CompletableFuture.allOf(
sut.aFutureCompletable(),
sut.aFutureCompletable(),
sut.aFutureCompletable(),
sut.aFutureCompletable(),
sut.aFutureCompletable()
).get()
}
}
ИС

Код: Выделить всё

@Component
class MySpecialBean {

@Throws(InterruptedException::class)
@Async("myThreadPoolExecutor") // Use the custom executor
fun aFutureCompletable(): CompletableFuture {
Thread.sleep(1000)  // Simulate a long-running task
return CompletableFuture.completedFuture(null)
}
}
Воспроизведение
Весь код находится в проекте Gradle, который можно клонировать здесь:
github. com/fatso83/test-driven-learning/.

Подробнее здесь: https://stackoverflow.com/questions/790 ... threadpool

Вернуться в «JAVA»