我正在尝试在我的 Service 类中实现并发方法调用。
我的服务类中有一些方法被注释为@Async,我正在尝试同时调用所有这些方法。但是这些方法是按顺序执行的。
这是我的服务类(虚拟):
@Service public class TestService {
public SomeDataType getSOmeDataType() {
try {
List<DataType> a = retrieveDataA().get();
List<DataType> b = retrieveDataB().get();
List<DataType> c = retrieveDataC().get();
List<DataType> d = retrieveDataD().get();
List<DataType> e = retrieveDataE().get();
}
catch (InterruptedException e) {
e.printStackTrace();
}
catch (ExecutionException e) {
e.printStackTrace();
}
return referralDetailsReferenceData;
}
@Async
private Future<List<DataType>> retrieveDataA() {
//method logic
}
@Async
private Future<List<DataType>> retrieveDataB() {
//method logic
}
@Async
private Future<List<DataType>> retrieveDataC() {
//method logic
}
@Async
private Future<List<DataType>> retrieveDataD() {
//method logic
}
@Async
private Future<List<DataType>> retrieveDataE() {
//method logic
}
这是我的弹簧配置:
<bean id="executorService" class="java.util.concurrent.Executors" factory-method="newFixedThreadPool">
<constructor-arg value="10" />
</bean>
<task:executor id="threadPoolTaskExecutor" pool-size="10" />
<task:annotation-driven executor="executorService" />
当“getSomeDataType”被执行时,方法被顺序调用。
我是 @Async 和 Spring 中的并发执行的新手,所以我确定我在做一些愚蠢的事情。但我无法弄清楚。
任何建议都非常感谢。