как создать несколько пулов потоков для одного метода в spring boot с помощью @Async

#java #spring-boot #threadpool

Вопрос:

У меня есть метод, но я хочу создать несколько пулов потоков. в настоящее время я пишу в процессе

 @Async ("poolProcessor1")
method A1 () {
// Handle similar logic A2
}


@Async ("poolProcessor2")
method A2 () {
// Handle similar logic A1

}
 

Есть ли способ создать несколько пулов потоков одним и тем же методом? Не могли бы вы, пожалуйста, помочь мне с предложениями или ключевыми словами.
Я использую Java spring boot

Комментарии:

1. Какую выгоду вы надеетесь получить, используя два метода на одном?

2. Поскольку при изменении мне просто нужно редактировать в одном и том же месте, эти 2 метода идентичны, что приводит к дублированию кода.

Ответ №1:

Вы можете использовать пул потоков без асинхронной аннотации на уровне метода (показано ниже). Вы можете программно решить, какой пул потоков использовать для разных логик.

 @Autowired
private Executor poolProcessor1;

@Autowired
private Executor poolProcessor2;

method A1 () {
  poolProcessor1.execute(()->...execute come logic or method)
  poolProcessor2.execute(()->...execute come logic or method)
}