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

}

 

完美! 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM