网易首页 > 网易号 > 正文 申请入驻

常用的模拟并发的四种方式+工具,超级实用!

0
分享至

Java精选面试题(微信小程序):5000+道面试题和选择题,真实面经简历模版,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计、大厂真题等,在线随时刷题!

一、Postman

Postman是一个款http请求模拟工具

首先演示一下postman最基本的使用

创建一个Springboot项目,测试的代码如下:

import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("test") public class TestConrtoller {     @GetMapping("demo")     public String testDemo() {         return "result~";     } }

为了便于操作,一般会将

http://127.0.0.1:8080是经常使用的地址+端口号,可以设置为环境

点击右上角的设置图标

选择global

输入信息

以后再进行测试就能这样搞简写了

知道基本使用之后,我们来看一下如何模拟并发测试

填写基本信息后,创建

这个时候会创建出Concurrency的文件夹,我们可以把刚才测试的demo的例子放进这个文件夹下

这个时候就可以在Concurrency下看到这个接口测试了

选择并发测试:

这个时候弹出我们想要的框了

点击Run Concurrency

你可以立马感觉到CPU在“燃烧”,因为要记录并打印日志,显示的话是一条一条来的,其实测试的速度,要比你看到的打印的日志的速度快,绿色表示正常

二、Apache Bench(AB)

ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab。

ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。

使用的话,首先需要安装Apache服务器

网站:http://httpd.apache.org/download.cgi

因为我的操作系统是windows10, 这里选择File for Microsoft Windows

Linux下的安装是非常简单的,这里不再演示

选择 ApacheHaus

进入下载页面 选择适合自己电脑的版本

文件解压到本地文件夹下,如果不是解压在c盘,需要设置参数,注意文件路径最好都是英文

关于需要设置参数,conf->httpd.conf 使用文本编辑器打开,

需要修改的有三个地方:

运行根目录,修改成自己解压到本地的路径

监听端口,默认监听端口是80,如果已被使用会报错需要修改,如果80端口未被使用,可不修改;如果修改了监听端口,则需要把ServerName localhost也相应改成同样的端 口号

DocumentRoot 测试文件存放地,且该目录必须存在

配置完成后,命令行cmd进入D:\softUtil\Apache24\bin目录下

httpd.exe  -k  install

启动:

httpd.exe -k start

测试:

  • -n:请求数

  • -c: 并发数

三、并发模拟工具JMeter

JMeter也是一款性能测试工具,是图形化的。

下载地址:传送门 http://jmeter.apache.org/

需要Java8+的环境

解压到你觉得合适的目录下(注意最好是英文路径)

进入它的bin目录下 启动jmeter.bat即可

使用很简单,首先在测试计划部分新建一个线程组

设置好基础信息后添加HTTP请求(基本信息设置好没有OK哈,直接添加HTTP请求)

填写HTTP请求相关的内容

之后还要添加监听器,这里选择是图形结果

再添加一个查看结果树吧

在运行之前打开log Viewer

下面开始运行:

执行成功,来感受一下结果:

点进去

查看结果树

四、代码模拟

这里需要用到一个类,就是CountDownLatch。

CountDownLatch是一个计数器闭锁,通过它可以完成类似于阻塞当前线程的功能,即:一个线程或多个线程一直等待,直到其他线程执行的操作完成。

CountDownLatch用一个给定的计数器来初始化,该计数器的操作是原子操作,即同时只能有一个线程去操作该计数器。调用该类await方法的线程会一直处于阻塞状态,直到其他线程调用countDown方法使当前计数器的值变为零,每次调用countDown计数器的值减1。当计数器值减至零时,所有因调用await()方法而处于等待状态的线程就会继续往下执行。这种现象只会出现一次,因为计数器不能被重置。

下图和它的方法可以体现出来:

CountDownLatch类只提供了一个构造器:

public CountDownLatch(int count) {  };  //参数count为计数值

然后下面这3个方法是CountDownLatch类中最重要的方法(上图能够反映出来)

public void await() throws InterruptedException { };   //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行 public boolean await(long timeout, TimeUnit unit) throws InterruptedException { };  //和await()类似,只不过等待一定的时间后count值还没变为0的话就会继续执行 public void countDown() { };  //将count值减1

下面还需要看一个类Semaphore

Semaphore与CountDownLatch相似,不同的地方在于Semaphore的值被获取到后是可以释放的,并不像CountDownLatch那样一直减到底。另外,推荐公众 号Java精选,回复java面试,获取面试资料,支持在线刷题。

它也被更多地用来限制流量,类似阀门的 功能。如果限定某些资源最多有N个线程可以访问,那么超过N个主不允许再有线程来访问,同时当现有线程结束后,就会释放,然后允许新的线程进来。有点类似于锁的lock与 unlock过程。相对来说他也有两个主要的方法:

  • 用于获取权限的acquire(),其底层实现与CountDownLatch.countdown()类似;

  • 用于释放权限的release(),其底层实现与acquire()是一个互逆的过程。

通过这两个类可以进行并发的模拟:

测试一下:

import lombok.extern.slf4j.Slf4j; import java.util.concurrent.*; @Slf4j publicclass CuncurrencyTest {     // 请求总数     publicstaticint clientTotal = 5000;     // 同时并发执行的线程总数     publicstaticint threadTotal = 200;     publicstaticint 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();                     add();                     semaphore.release();                 } catch (InterruptedException e) {                     e.printStackTrace();                     log.error("exception",e);                 }                 countDownLatch.countDown();             });         }         countDownLatch.await();         executorService.shutdown();         log.info("count:{}",count);     }     private static void  add() {         count++;     } }

因为count不是线程安全的,且没有作防护措施,结果是错的

上面是对代码的并发模拟的简单形式,值得注意的是,这里提到的两个类不是专门做并发模拟,它们的用途很广泛,大家可以了解一下。

版权声明:本文为CSDN博主「沉晓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

https://blog.csdn.net/qq_42322103/article/details/102736170

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

文章有帮助的话,点在看,转发吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
CBA名记:上海队面临三个处罚!

CBA名记:上海队面临三个处罚!

体育哲人
2026-07-11 12:36:26
影片《功夫女足》首日票房突破2亿,打破7项中国影史纪录,张小斐主演电影累计票房破105亿

影片《功夫女足》首日票房突破2亿,打破7项中国影史纪录,张小斐主演电影累计票房破105亿

台州交通广播
2026-07-11 21:44:20
中美激光武器射程对比:美国可达5000米,中国LW-60射程有多远?

中美激光武器射程对比:美国可达5000米,中国LW-60射程有多远?

影孖看世界
2026-07-11 16:12:18
灾难事件中的歌颂叙事,越来越让人反感

灾难事件中的歌颂叙事,越来越让人反感

黔有虎
2026-07-10 17:13:47
长沙霸占车位女子被停职,其男友也参与了堵车,六次调节详情曝光

长沙霸占车位女子被停职,其男友也参与了堵车,六次调节详情曝光

汉史趣闻
2026-07-11 21:13:19
爆冷!女排22-25美洲鱼腩 龚翔宇持续低迷,庄宇珊带不动

爆冷!女排22-25美洲鱼腩 龚翔宇持续低迷,庄宇珊带不动

南海浪花
2026-07-11 20:29:48
英挪大战未开打,英格兰与挪威两国航空公司“开战了”:输的换LOGO一天

英挪大战未开打,英格兰与挪威两国航空公司“开战了”:输的换LOGO一天

红星新闻
2026-07-11 15:52:31
油价大涨超0.47元/升,92汽油“3连跌”接近7.1元/升后,新周期“罕见反转”,7月17日调价或变涨!

油价大涨超0.47元/升,92汽油“3连跌”接近7.1元/升后,新周期“罕见反转”,7月17日调价或变涨!

猪友巴巴
2026-07-10 18:05:03
一周竟然7次,42岁男子心源性猝死,妻子:劝了很多次,就是不听

一周竟然7次,42岁男子心源性猝死,妻子:劝了很多次,就是不听

医学原创故事会
2026-07-08 23:34:05
非必要不做肠镜?医生:只要做过肠镜,患者一定多加关注这4点!

非必要不做肠镜?医生:只要做过肠镜,患者一定多加关注这4点!

芹姐说生活
2026-07-09 23:13:04
张家口一路面深夜塌陷致3车坠落,多位市民牵绳施救,当地通报:被困4人全部救出,1死1轻微伤

张家口一路面深夜塌陷致3车坠落,多位市民牵绳施救,当地通报:被困4人全部救出,1死1轻微伤

极目新闻
2026-07-11 11:56:09
气哭了?库尔图瓦疑不满教练:我的伤只影响开大脚 但他坚持换下我

气哭了?库尔图瓦疑不满教练:我的伤只影响开大脚 但他坚持换下我

风过乡
2026-07-11 06:56:50
“这么小就有阴德纹,她的家长不简单!”小学女生面相走红

“这么小就有阴德纹,她的家长不简单!”小学女生面相走红

泽泽先生
2026-07-11 15:40:54
瑞典女网红模仿哈兰德走红,社媒粉丝从36万飙升至110万

瑞典女网红模仿哈兰德走红,社媒粉丝从36万飙升至110万

懂球帝
2026-07-11 18:29:11
印度40年前引进的一款老卡车近日获盛赞,称为印军导弹强大的基石

印度40年前引进的一款老卡车近日获盛赞,称为印军导弹强大的基石

陶慕剑地球观察
2026-07-10 20:26:52
莫迪结束访台后6天访3国,加速对华包围

莫迪结束访台后6天访3国,加速对华包围

孤酒老巷QA
2026-07-11 20:40:14
沉默45年,中国第二轮"严打"终于来了!目标改变总体战正式打响

沉默45年,中国第二轮"严打"终于来了!目标改变总体战正式打响

职场资深秘书
2026-07-10 17:11:17
普京给不了中国给!朝鲜总理携大单火速访华,美韩这下坐不住了

普京给不了中国给!朝鲜总理携大单火速访华,美韩这下坐不住了

卷史
2026-07-11 11:32:05
3-0,中超第11完胜中超第5,深圳新鹏城队终结2连败

3-0,中超第11完胜中超第5,深圳新鹏城队终结2连败

侧身凌空斩
2026-07-11 21:31:55
被逼看下体仅是皮毛!鹿晗风波持续发酵,关晓彤越扒越让人心疼!

被逼看下体仅是皮毛!鹿晗风波持续发酵,关晓彤越扒越让人心疼!

王楔晓
2026-07-10 11:38:01
2026-07-11 22:48:49
Java精选
Java精选
一场永远也演不完的戏
1796文章数 3859关注度
往期回顾 全部

科技要闻

苹果起诉OpenAI系统性窃密,挖超400前员工

头条要闻

老村干部被洪水卷走遇难:31年前监工建的学校屹立未倒

头条要闻

老村干部被洪水卷走遇难:31年前监工建的学校屹立未倒

体育要闻

燃尽的比利时黄金一代,逃不过厄运诅咒

娱乐要闻

周星驰官宣星女郎 纯素人无拍戏经验

财经要闻

一封举报信 引发小红书IPO合规考验

汽车要闻

预售权益价11.78万起 五菱星光L将于7月16日上市

态度原创

家居
房产
游戏
旅游
公开课

家居要闻

2026建博会(广州) 公装联探展交流活动

房产要闻

重磅学校规划曝光!西海岸教育,正强得可怕!

任天堂平台独占JRPG新作!《白猫计划》正式公布

旅游要闻

长三角夏日限定浪漫!金泽第三届江南水乡观莲季启幕

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版