从另一个异步方法调用的 Spring 异步方法
2022-09-01 08:12:42
我正在使用Spring 4,我注意到一个奇怪的行为......如果我从普通实例方法多次调用异步方法,那么它们都会在不同的线程中调用,并在随机时间完成。但是,如果我从另一个异步方法多次调用异步方法,则它们按顺序完成。我有这样的东西:
@Async
public void nonAsyncMethod() {
for (int i = 0; i < 30; i++) {
asyncMethod();
}
}
@Async
public void asyncMethod() {
... something here
}
我正在使用默认的异步执行器。我应该使用其他的吗?但是,此执行器不会重用任何线程,并且每次都会启动另一个线程,因此应该没问题...这可能只是一个巧合吗?但是我已经尝试了10多次,如果我恢复到第一种方法的非异步,那么它们会随机完成