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 ...
随机推荐
- 在线Base64转文件、文件转Base64工具
在线Base64转换神器,一键实现Base64编码与文件互转!支持图片.文档等各类文件,快速准确,安全无服务器存储.拖拽上传,轻松编码解码,提升开发效率.跨平台兼容,移动端友好,让数据转换再无障碍. ...
- 使用shell脚本在Linux中管理Java应用程序
目录 前言 一.目录结构 二.脚本实现 1. 脚本内容 2. 使用说明 2.1 配置脚本 2.2 脚本部署 2.3 操作你的Java应用 总结 前言 在日常开发和运维工作中,管理基于Java的应用程序 ...
- linux安装redis完整步骤
linux安装redis完整步骤 安装:1.获取redis资源 wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 tar x ...
- vue.config.js配置优化
vue.config.js完整代码如下: 'use strict'; // Template version: 1.3.1 // see http://vuejs-templates.github.i ...
- 15-容器简介与Docker安装
传统企业应用构建 应用被直接部署在操作系统之上,并且操作系统直接安装于硬件之上应用被操作系统绑定 操作系统被硬件绑定 缺点 部署非常慢(启动应用的速度非常慢) 成本非常高(原有服务器的操作系统不支持这 ...
- 高通SOC启动流程
背景 开始接手高通开发的有关工作,为了调试底层驱动,因此有必要了解高通平台上电启动的流程是怎么样的. 以 MSM8953 为例子. MSM:mobile station modems,移动基带处理器, ...
- nn.Conv2d()中dilation参数的作用
nn.Conv2d()中dilation参数的作用 下面这张图很好的描述了这个参数的作用 优点: 这样每次进行单次计算时覆盖的面积(感受域)增大,最开始时3*3 = 9 然后是5*5 = 25最后是7 ...
- HGAME2023 week1-week2
确实是高质量比赛,学到了很多知识.认识到了很多的不足. 任重而道远啊... hgame_week1 web Classic Childhood Game F12检查源码,打开Events.js 发现 ...
- 当一名有着 10w+ 听众的播客主播开始做 App
名字: AAAny 开发者 / 团队: AAAny Team 平台: iOS 请简要介绍下这款产品 AAAny 是一个专为 AMA(我们称之为 AAA)设计的 App.多解释一下的话,其实 AAA 是 ...
- 使用threejs实现3D卡片菜单
成品效果: 用到的技术:vue2.three.js.gsap.js template <template> <div id="box" class="c ...