并发请求下游多个服务

Future + 线程池+ countDownLatch 并发请求多个服务

  1. public String getDataFromAandB(){
  2. CountDownLatch countDownLatch = new CountDownLatch(2);
  3. Future<String> fa = getDataFromA(countDownLatch);
  4. Future<String> fb = getDataFromB(countDownLatch);
  5. countDownLatch.await();
  6. String a = fa.get();
  7. String b = fb.get();
  8. return a+b
  9. }
  10. @Async
  11. public Future<String> getDataFromA(CountDownLatch countDownLatch){
  12. String a = getFromA();
  13. try{
  14. return AsyncResult.forValue(a);
  15. . }
  16. catch(Exception e){
  17. }
  18. finally{
  19. countDownLatch.countDown();
  20. }
  21. }
  22. @Async
  23. public Future<String> getDataFromB(CountDownLatch countDownLatch){
  24. // 请求B系统
  25. String b = getFromB();
  26. try{
  27. return AsyncResult.forValue(b);
  28. . }
  29. catch(Exception e){
  30. }
  31. finally{
  32. countDownLatch.countDown();
  33. }
  34. }

异步请求下游多个服务