java多线程并发测试工具_【漫画】JAVA并发编程之并发模拟工具

原创声明:本文来源于【胖滚猪学编程】,转载请注明出处。

上一节【漫画】JAVA并发编程三大Bug源头(可见性、原子性、有序性)我们聊了聊并发编程的三个bug源头,这还没开始进入并发世界,胖滚猪就遇到了难题。。

这个难题是所有初学者都会有的疑惑:没法复现那些理论知识告诉我们的bug。但是实际操练很重要,那么在本地开发环境,到底应该怎样模拟并发呢?

AAffA0nNPuCLAAAAAElFTkSuQmCC

模拟并发工具大全

在本地模拟并发环境的方法有挺多的,比较热门的有以下几种,包括工具和代码:

1、Postman:Http请求模拟工具,可以设置发起N个请求(但不推荐,并不专业)

2、Apache Bench(AB):Apache 服务器的一个web压力测试工具,是一个命令行工具,可根据命令创建很多并发访问线程,模拟多个访问者同时对某一个URL地址进行访问。总体来说,ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标;但是缺点就是没有图形化结果,不能监控。

3、Apache JMeter:Apache组织开发的基于Java的压力测试工具。功能相比AB会更加强大,尤其是有GUI图形化界面,这一点很爽。另外jmeter是一次完整的请求和返回;AB只是发出去请求,并不对返回做处理。如果你希望看到返回结果,那么也应该选择JMeter。

4、JAVA代码:包括CountDownLatch、CyclicBarrier等

我们主要说一下如何通过jmeter和代码来模拟并发环境,也推荐使用这两种方式。

CountDownLatch(等待多线程完成)

原创声明:本文来源于【胖滚猪学编程】,转载请注明出处。

countDownLatch是在java1.5被引入,存在于java.util.cucurrent包下。

这个类能使一个线程等待其他线程各自执行完毕后再执行。

它是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。

如图所示,初始值cnt=3,线程A执行了await方法所以被阻塞等待,T1\T2\T3线程通过调用countDown,让计数器减一,直到cnt=0后,Thread A才恢复运行。换句话说就是,Thread A需要等待其他三个线程都执行完才能执行:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值