小编Vml*_*l11的帖子

等待多个CompletableFuture(直到最大超时)?

我最近刚刚开始使用 CompletableFuture,但遇到了一个问题,我有 N 个请求待办事项。

每个请求应发送到 2 个不同的端点,并应比较 JSON 格式的结果。由于我有大量的请求待办事项,并且我不知道每个请求需要多长时间,因此我想限制等待结果的时间,例如 3 秒左右。

所以我写了这个测试代码:

public class MainTest {

   private static final Logger logger = LoggerFactory.getLogger(MainTest.class);
   private Instant start;

   public static void main(String[] args) {

       MainTest main = new MainTest();
       main.start();
   }

   public void start(){
       String req1 = "http://localhost:8080/testing";
       String req2 = "http://127.0.0.1:8095/testing2";

       ExecutorService exec = Executors.newCachedThreadPool();

       start = Instant.now();
       CompletableFuture<String> comp1 = CompletableFuture.supplyAsync(() -> doReq(req1), exec);
       CompletableFuture<String> comp2 = CompletableFuture.supplyAsync(() -> doReq(req2), exec);


       List<CompletableFuture<String>> completables = List.of(comp1,comp2);

       logger.info("Waiting completables");

       CompletableFuture<List<String>> a = …
Run Code Online (Sandbox Code Playgroud)

java concurrency task completable-future unirest-java

15
推荐指数
1
解决办法
4万
查看次数