并发模拟之工具
Postman:Http请求模拟工具。
在接口测试中是一个十分给力的工具;但在并发模拟方面做得不够专业。
Apache Bench (AB):Apache附带的工具,用以测试网站性能。
AB小巧简单,上手容易,但是没有图形化界面,也无法做到实时监控。
JMeter:Apache组织开发的压力测试工具。
下载安装并配置环境变量。
配置总请求数量、线程上升期间(s)、循环次数:
指定HTTP请求的基本信息:端口信息、请求方法、路径、编码方式等
JMeter测试中数据统计:
JMeter第一次测试失败,原因是连接异常(自己没启动SpringBoot,笑死我了……)
JMeter测试成功截图:
jmeter结果树:
jmeter结果树请求头:
jmeter结果树响应数据:
并发模拟之代码
CountDownLatch类
其原理图如下:
根据上图:其他线程每次执行结束即执行一次countDown(),已经执行结束任务的线程执行await()判断当前计数cnt是否为零,未至0则等待其他线程,只当计数cnt为0时该线程会被resumed去执行后续的操作。
该类可以通过计数来阻塞线程,主要用于线程执行完之后的其他处理:指定一个计数值,在并发环境下由线程进行减1操作,当计数值变为0之后,被await方法阻塞的线程将会唤醒,实现线程间的同步。通俗理解:已经执行完成的线程等待还未完成的线程,最后所有线程一同执行另外的任务。
Semphore类
Semphore从字面上理解就是信号量,学过《操作系统》课程的人应该知道,在操作系统调度任务时,根据其设定的Semphore值进行同时运行的线程数量的操作。
同理,此处的Semphore的含义也是如此。它主要是用来控制同时并发的线程数。
该两个类通常会结合线程池ThreadPool进行并发的模拟。