我正在使用Spring 4,我注意到一个奇怪的行为......如果我从普通实例方法多次调用异步方法,那么它们都会在不同的线程中调用并随机完成.但是,如果我从另一个异步方法多次调用异步方法,那么它们按顺序完成.我有这样的事情:
@Async
public void nonAsyncMethod() {
for (int i = 0; i < 30; i++) {
asyncMethod();
}
}
@Async
public void asyncMethod() {
... something here
}
Run Code Online (Sandbox Code Playgroud)
我正在使用默认的异步执行程序.我应该使用另一个吗?然而,这个执行器不会重复使用任何线程并且每次都启动另一个线程所以它应该没问题......它只是巧合吗?但我尝试过10次以上,如果我恢复到第一种方法的非异步,那么他们会随机完成