如何在@Async中使用特定的ExecutorService?

时间:2016-02-24 09:18:27

标签: java spring asynchronous

@Async(value = "")可以使用ExecutorTaskExecutor名称来运行异步流程。

我的目标是通常使用默认的@Async实现执行spring方法,但要使用一个与特定执行程序一起运行的特定方法@Async(value = "myExecutor")

我想使用一次只运行一个线程的执行程序,并将任何其他数据保留在队列中。

@Bean
public ExecutorService getMyTaskExecutor() {
    return Executors.newFixedThreadPool(1);
}

问题:我现在如何将此ExecutorService应用于我的@Async方法?

@Async(value = "myTaskExecutor")
public void myprocess() {

}

@Async(value = "asdasdasdMyTaskExecutor")
public void myprocess() {

}

问题是:无论我在这里写什么价值,应用程序总是会启动。所以我无法确定这里是否应用了正确的执行程序。我必须使用什么bean名称?

2 个答案:

答案 0 :(得分:2)

引用@Bean文档:

  

虽然name属性可用,但确定bean名称的默认策略是使用@Bean方法的名称。

因此,如果您的方法名为getMyTaskExecutor,则应该有@Async(value = "getMyTaskExecutor"),即执行程序的名称必须与bean的名称相对应,默认情况下,该名称是@Bean注释方法。

答案 1 :(得分:0)

根据documentation,它应该是@Async(" myTaskExecutor")