java 并发http请求

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

    @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));
    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容