JAVA学习笔记(并发编程-贰)- 并发的模拟

xiaoxiao2025-09-02  14

文章目录

Postman : Http请求模拟工具Apache Bench (AB) : Apache附带的工具,测试网站性能JMeter : Apache组织开发的的压力测试工具代码: Semaphore, CountDownLatch等

Postman : Http请求模拟工具

前置条件是准备一个springboot的框架写一个test接口 将链接加入postman快捷方式 进行并发测试 Postman测试比较慢。。。

Apache Bench (AB) : Apache附带的工具,测试网站性能

本测试1000个;并发量为50

Concurrency Level: 50 【并发量Time taken for tests: 0.355 seconds 【总测试时间Complete requests: 1000【完成请求数Failed requests:0Total transferred: 136000 bytes【响应数据头总和HTML transferred: 4000 bytes【正文数据总和Requests per second: 2816.64#/secl (mean)【吞吐率Time per request: 17.752 ms (mean)【用户平均请求等待时间Time per request: 0.355 ms] (mean, across all concurrent - requests) 【服务器平均请求等待时间Transfer rate: 374.08 「Kbytes/secl received【单例时间从服务器获取的数据长度

JMeter : Apache组织开发的的压力测试工具

添加线程组 添加http请求 查看监听器

代码: Semaphore, CountDownLatch等

package com.mmall.concurrency; import com.mmall.concurrency.annoations.NotThreadSafe; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; @Slf4j @NotThreadSafe /** * 代码模拟并发 */ public class ConcurrencyTest { //请求总数 public static int clientTotal=5000; //同事并发执行的线程数 public static int threadTotal=200; //计数 public static int count=0; public static void main(String[] args) throws InterruptedException { //定义一个线程池 ExecutorService executorService = Executors.newCachedThreadPool(); //信号量(允许的并发数) final Semaphore semaphore = new Semaphore(threadTotal); //计数器(线程总数) final CountDownLatch countDownLatch = new CountDownLatch(clientTotal); for (int i = 0; i < clientTotal; i++) { executorService.execute(()->{ try { semaphore.acquire();//当前进程是否可以执行(判断并发是否小于200) add(); semaphore.release();//释放进程 } catch (InterruptedException e) { log.error("exception",e); } countDownLatch.countDown(); }); } countDownLatch.await(); executorService.shutdown();//关闭线程池 log.info("count:{}",count); } private static void add(){ count++; } } /** * 运行结果(正常情况下结果为5000) * 13:51:56.338 [main] INFO com.mmall.concurrency.ConcurrencyTest - count:4987 */
转载请注明原文地址: https://www.6miu.com/read-5035644.html

最新回复(0)