Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一个@Async中使用不同的执行器_Java_Spring_Multithreading_Asynchronous - Fatal编程技术网

Java 如何在一个@Async中使用不同的执行器

Java 如何在一个@Async中使用不同的执行器,java,spring,multithreading,asynchronous,Java,Spring,Multithreading,Asynchronous,这是关于在使用@Async注释调用同一方法时如何使用不同的执行器 问题是我们希望对一些外部调用使用重试(和日志记录)策略。所有这些逻辑都在带有@Async注释的方法中,要执行的业务逻辑被传递给它(可运行的): 但是我们希望根据调用的不同,使用不同的线程池 我认为@Async注释不允许el从参数或类似的东西中获取执行器 是否有其他方法为此配置该注释,或者使用不同的方法来指定不同执行器的不同方法?是的,您可以。您需要在spring上下文文件中定义一个执行器bean,并在@Async中传递该bean

这是关于在使用@Async注释调用同一方法时如何使用不同的执行器

问题是我们希望对一些外部调用使用重试(和日志记录)策略。所有这些逻辑都在带有@Async注释的方法中,要执行的业务逻辑被传递给它(可运行的):

但是我们希望根据调用的不同,使用不同的线程池

我认为@Async注释不允许el从参数或类似的东西中获取执行器


是否有其他方法为此配置该注释,或者使用不同的方法来指定不同执行器的不同方法?

是的,您可以。您需要在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”异步执行
}
有关更多信息,请参阅: