我正在使用Spring 4,发现一个奇怪的现象... 如果我从普通实例方法中多次调用异步方法,则所有调用都在不同的线程中运行,并且以随机时间完成。但是,如果我从另一个异步方法中多次调用异步方法,则它们按顺序完成。我有类似以下代码:
@Async
public void nonAsyncMethod() {
for (int i = 0; i < 30; i++) {
asyncMethod();
}
}
@Async
public void asyncMethod() {
... something here
}
我正在使用默认的异步执行程序。我应该使用其他的吗?但是这个执行程序不会重用任何线程,并且每次都会启动另一个线程,所以应该没问题...这只是巧合吗?但我尝试了超过10次,如果我将第一个方法恢复为非异步,则它们会随机完成。