java 并发http请求

2023-10-11  本文已影响0人  夜空中乄最亮的星

由于业务中会进行多次接口请求,每次以串行方式请求会导致整个流程耗时边长。采用并发请求方式,并在最终聚合请求结果。可以大大缩短整个运行时长

    @GetMapping("/test")
    public ResponseMessage test(){
        long t1 = System.currentTimeMillis();
        List<String> results = new ArrayList<>();
        List<String> list = Lists.newArrayList(
                "http://localhost:8080/api/ceshi?id=1",
                "http://localhost:8080/api/ceshi?id=2",
                "http://localhost:8080/api/ceshi?id=3",
                "http://localhost:8080/api/ceshi?id=4",
                "http://localhost:8080/api/ceshi?id=5"
        );
        List<CompletableFuture<String>> futureTasks = new ArrayList<>(list.size());
        for (String url : list) {
            futureTasks.add(CompletableFuture.supplyAsync(() -> HttpUtil.get(url)));
        }

        for (CompletableFuture<String> futureTask : futureTasks) {
            results.add(futureTask.join());
        }
        System.out.println(results);
        long t2 = System.currentTimeMillis();

        return ResponseMessage.success("耗时:"+ (t2-t1));
    }

上一篇 下一篇

猜你喜欢

热点阅读