【发布时间】:2014-09-13 22:23:18
【问题描述】:
我正在使用 Spring 4,但我注意到一个奇怪的行为......如果我从一个普通的实例方法多次调用异步方法,那么它们都在不同的线程中调用并在随机时间完成。但是,如果我从另一个异步方法多次调用一个异步方法,那么它们会按顺序完成。我有这样的事情:
@Async
public void nonAsyncMethod() {
for (int i = 0; i < 30; i++) {
asyncMethod();
}
}
@Async
public void asyncMethod() {
... something here
}
我正在使用默认的异步执行器。我应该使用不同的吗?然而,这个执行器不重用任何线程并且每次都启动另一个,所以应该没问题......这可能只是巧合吗?但是我已经尝试了超过 10 次,如果我将第一种方法恢复为非异步,那么它们会随机完成
【问题讨论】:
-
如果第一个异步方法调用的非异步方法调用了第二个异步方法(多次)怎么办?
标签: java multithreading spring asynchronous spring-4