并发请求下游多个服务
Future + 线程池+ countDownLatch 并发请求多个服务
public String getDataFromAandB(){
CountDownLatch countDownLatch = new CountDownLatch(2);
Future<String> fa = getDataFromA(countDownLatch);
Future<String> fb = getDataFromB(countDownLatch);
countDownLatch.await();
String a = fa.get();
String b = fb.get();
return a+b;
}
@Async
public Future<String> getDataFromA(CountDownLatch countDownLatch){
String a = getFromA();
try{
return AsyncResult.forValue(a);
. }
catch(Exception e){
}
finally{
countDownLatch.countDown();
}
}
@Async
public Future<String> getDataFromB(CountDownLatch countDownLatch){
// 请求B系统
String b = getFromB();
try{
return AsyncResult.forValue(b);
. }
catch(Exception e){
}
finally{
countDownLatch.countDown();
}
}