From b987415fa21ec9186e0333fc25f6a7b87a5525ca Mon Sep 17 00:00:00 2001 From: liukang <644012909@qq.com> Date: Tue, 4 Mar 2025 23:47:49 +0800 Subject: [PATCH] =?UTF-8?q?httpclient=20=E5=A4=8D=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/web/task/RyTask.java | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/RyTask.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/RyTask.java index 73d655d..ccd213a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/task/RyTask.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/RyTask.java @@ -24,6 +24,8 @@ import java.net.http.HttpResponse; import java.time.Duration; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; /** * 定时任务调度测试 @@ -269,7 +271,10 @@ public class RyTask { List req = new ArrayList<>(); + ExecutorService executorService = Executors.newFixedThreadPool(100); HttpClient client = HttpClient.newHttpClient(); + // 创建一个请求列表 + List> futures = new ArrayList<>(); for (Apply a : applies) { // 准备JSON负载 @@ -303,21 +308,26 @@ public class RyTask { Thread.sleep(start - now - perform.getDelayTime()); log.info("抢票开始了"); for (MyReq r : req) { - // 发起异步请求,但不等待结果 - CompletableFuture> future2 = client.sendAsync(r.getRequest(), HttpResponse.BodyHandlers.ofString()); log.info("【用户】:" + r.getUser()); - future2.thenAccept(response -> { - // 处理响应(例如,记录日志) - log.info("Response received: " + response.statusCode()); - log.info(response.body()); - }).exceptionally(ex -> { - // 处理异常 - ex.printStackTrace(); - return null; - }); - log.info("测试"); + // 发起异步请求,但不等待结果 + CompletableFuture future2 = client.sendAsync(r.getRequest(), HttpResponse.BodyHandlers.ofString()) + .thenApplyAsync(HttpResponse::body, executorService); + futures.add(future2); } + // 等待所有请求完成 + CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); + + // 输出所有请求的响应(可选) + for (CompletableFuture future : futures) { + try { + System.out.println(future.get()); + } catch (Exception e) { + log.error(e.getMessage()); + } + } + // 关闭线程池 + executorService.shutdown(); //status Perform pStatus2 = new Perform();