Java 如何在一个@Async中使用不同的执行器
这是关于在使用@Async注释调用同一方法时如何使用不同的执行器 问题是我们希望对一些外部调用使用重试(和日志记录)策略。所有这些逻辑都在带有@Async注释的方法中,要执行的业务逻辑被传递给它(可运行的): 但是我们希望根据调用的不同,使用不同的线程池 我认为@Async注释不允许el从参数或类似的东西中获取执行器Java 如何在一个@Async中使用不同的执行器,java,spring,multithreading,asynchronous,Java,Spring,Multithreading,Asynchronous,这是关于在使用@Async注释调用同一方法时如何使用不同的执行器 问题是我们希望对一些外部调用使用重试(和日志记录)策略。所有这些逻辑都在带有@Async注释的方法中,要执行的业务逻辑被传递给它(可运行的): 但是我们希望根据调用的不同,使用不同的线程池 我认为@Async注释不允许el从参数或类似的东西中获取执行器 是否有其他方法为此配置该注释,或者使用不同的方法来指定不同执行器的不同方法?是的,您可以。您需要在spring上下文文件中定义一个执行器bean,并在@Async中传递该bean
是否有其他方法为此配置该注释,或者使用不同的方法来指定不同执行器的不同方法?是的,您可以。您需要在spring上下文文件中定义一个执行器bean,并在@Async中传递该bean id(“执行器id”),如下所示
<bean id="otherExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="queueCapacity" value="25" />
</bean>
@Async("otherExecutor")
void doSomething(String s) {
// this will be executed asynchronously by "otherExecutor"
}
@异步(“其他执行器”)
无效剂量测定(字符串s){
//这将由“otherExecutor”异步执行
}
有关更多信息,请参阅:是,您可以。您需要在spring上下文文件中定义一个执行器bean,并在@Async中传递该bean id(“执行器id”),如下所示
<bean id="otherExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="queueCapacity" value="25" />
</bean>
@Async("otherExecutor")
void doSomething(String s) {
// this will be executed asynchronously by "otherExecutor"
}
@异步(“其他执行器”)
无效剂量测定(字符串s){
//这将由“otherExecutor”异步执行
}
有关更多信息,请参阅: