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 での同時実行が初めてなので、ばかげたことをしていると確信しています。しかし、私はそれを理解することができません。
どんな提案でも大歓迎です。