zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    
    }

    完美! 

  • 相关阅读:
    linux 修改文件夹颜色 终端颜色
    每日更新FadeTop背景为必应图片
    odoo 去除动作菜单的删除按钮
    crontab详解
    odoo 创建初始数据库 切换当前数据库
    python for else
    lfi phpinfo
    python __dict__
    iscsi 开机自动挂载
    HP SSD smart path
  • 原文地址:https://www.cnblogs.com/newAndHui/p/13722904.html
Copyright © 2011-2022 走看看