java模拟并发请求工具类(测试专用)
1.背景
实际生产中,我们开发好接口后可能会简单的压力测试一下,也就是说模拟并发测试,测试工具类如下:
2.工具类
package tentative.normal.other; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.Method;
import com.alibaba.fastjson.JSON; import java.util.Map;
import java.util.concurrent.CountDownLatch; /**
* @Copyright (C) 四川XXXXXX有限公司
* @Author: LI DONG PING
* @Date: 2020-09-24 10:21
* @Description: <p>
* 并发请求工具类
* </p>
*/
public class HttpConcurrentUtil { //默认并发数
private static int num = 10; private static CountDownLatch cdl = new CountDownLatch(num); /**
* 执行并发请求
*
* @param url 请求url
* @param paramMap 请求参数
* @param n 并发数
*/
public static void doPost(String url, Map<String, Object> paramMap, Integer n) {
if (n != null) {
num = n;
}
for (int i = 0; i < num; i++) {
new Thread(new HttpConcurrentUtil.UserRequest(url, paramMap)).start();
cdl.countDown();
}
} public static class UserRequest implements Runnable {
private String url;
private Map<String, Object> paramMap; public UserRequest(String url, Map<String, Object> paramMap) {
this.url = url;
this.paramMap = paramMap;
} @Override
public void run() {
try {
cdl.await();
} catch (Exception e) {
e.printStackTrace();
}
//使用工具类发送http请求
doPost(url, paramMap); } /**
* 这里可以根据自己的实际情况修改具体请求方式
*
* @param url
* @param paramMap
*/
public void doPost(String url, Map<String, Object> paramMap) {
System.out.println("当前线程名称:" + Thread.currentThread().getName());
System.out.println("请求地址:" + url);
HttpRequest request = HttpUtil.createRequest(Method.POST, url); String jsonString = JSON.toJSONString(paramMap);
//json参数格式
request.body(jsonString);
//表单请求
//request.form(paramMap); System.out.println("请求参数:" + jsonString);
request.setConnectionTimeout(60 * 1000);
String response = request.execute().body();
System.out.println("响应结果:" + response);
}
} }
完美!
java模拟并发请求工具类(测试专用)的更多相关文章
- Java模仿http请求工具类
package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...
- Java 发送 Https 请求工具类 (兼容http)
依赖 jsoup-1.11.3.jar <dependency> <groupId>org.jsoup</groupId> <artifactId>js ...
- 基于JAVA原生HTTP请求工具类 httphelper
原文地址;http://lushuifa.iteye.com/blog/2313896 import java.io.BufferedReader; import java.io.BufferedWr ...
- Java之网络请求工具类(依赖:org.apache.http;注:HttpClient 4.4,HttpCore 4.4)
到此处可以去下载依赖包:http://hc.apache.org/downloads.cgi import java.util.List; import org.apache.http.HttpSta ...
- Java 实现 Http 请求工具类
package com.demo.util; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- Java进行http请求工具类代码(支持https)
package com.guyezhai.modules.utils; import java.io.BufferedReader; import java.io.DataOutputStream; ...
- Java 发送 Http请求工具类
HttpClient.java package util; import java.io.BufferedReader; import java.io.IOException; import java ...
- Http请求工具类(Java原生Form+Json)
package com.tzx.cc.common.constant.util; import java.io.IOException; import java.io.InputStream; imp ...
- java模板模式项目中使用--封装一个http请求工具类
需要调用http接口的代码继承FundHttpTemplate类,重写getParamData方法,在getParamDate里写调用逻辑. 模板: package com.crb.ocms.fund ...
- java jdk原生的http请求工具类
package com.base; import java.io.IOException; import java.io.InputStream; import java.io.InputStream ...
随机推荐
- 什么是spring框架?
spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架
- Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
目录 Elasticsearch聚合查询说明 空值率查询DSL Elasticsearch聚合基础知识扩展 Elasticsearch聚合概念 Script 用法 Elasticsearch聚合查询语 ...
- 常用RAID级别简介
RAID不同等级的两个目标: 1. 增加数据可靠性 2. 增加存储的读写性能 RAID级别: RAID-0: 是以条带的形式将数据均匀分布在阵列的各个磁盘上 优点:读写性能高,不存在校验,不会 ...
- Win11在VMWare中无tpm条件下安装
Win11在VMWare中无tpm条件下安装 在条件不满足提示的窗口下. 按shift+F10打开cmd, 输入regedit打开注册表, 按如下路径新建三个值后即可 [HKEY_LOCAL_MACH ...
- ffmpeg 学习:主要结构体之间关系
背景 学习例程源码的时候,搞不清楚各结构体之间是什么含义. 解析 FFmpeg 有多个重要的结构体,解协议,解分装,解码,解封装. 解协议: http,rstp,rtmp,mms. AVIOConte ...
- 使用Github Action来辅助项目管理
Github action 是一个Github官方提供的非常流行且速度集成 持续集成和持续交付(CI/CD)的工具.它允许你在GitHub仓库中自动化.定制和执行你的软件开发工作流.你可以发现.创建和 ...
- B码对时方案,基于TI AM62x异构多核工业处理器实现!
什么是IRIG-B码对时 IRIG-B(inter-range instrumentationgroup-B)码是一种时间同步标准,通常用于精确的时间测量和数据同步,广泛应用于电力.通信.航空等领域. ...
- Linux基本编程环境安装
前言 可以采用组合式安装,如:https://oneinstack.com/ 选择好要安装的,然后复制安装命令就可以一键搞定很多东西了 VMware安装Centos7 按照物理机CPU实际情况,选择处 ...
- Java全局唯一ID生成策略
在分布式系统中常会需要生成系统唯一ID,生成ID有很多方法,根据不同的生成策略,以满足不同的场景.需求以及性能要求. 1.数据库自增序列 这是最常见的一种方式,利用DB来生成全库唯一ID. 优点: 此 ...
- documen.write 和 innerHTML 的区别?
document.write只能重绘整个页面,innerHTML可以重绘页面的一部分. 1. ducument.write使用举例html文档: <!doctype html> <h ...