Java 多线程编程在 JMeter 中应用

本文介绍了如何在JMeter中利用Java多线程编程进行性能测试,特别是针对全局唯一变量的线程安全处理。通过创建线程安全对象、使用锁机制确保并发自增操作的线程安全,以及JSR223预处理程序实现需求。同时,分享了不加锁和加锁情况下日志输出的对比,以帮助读者理解多线程控制的重要性。

目录

前言:

首先新建一个简单的线程组和一个简单的请求:

添加 JSR223 预处理程序(后置处理程序需要下一次次请求)

可以通过复制私有变量来控制所有线程获取公共变量时的线程安全问题。

日志输出:


前言:

Java多线程编程在JMeter中的应用可以帮助模拟并发用户对系统进行性能测试。JMeter本身就是基于Java开发的,因此可以利用Java多线程编程的能力来实现并发请求。

在最近的工作中,遇到一个需求:在JMeter中生成一个全局唯一变量,获取一次自增 x(这个不确定,可能根据响应信息)。这不是我的需求,只是从同事那边听说到的,周末没事儿想起来这个事儿。按照我的方案肯定是用Java或者Groovy去实现这个需求,肯定不会选JMeter

如果非要给这个需求加一个jmeter的设定,我依然会选择用脚本语言实现,这次我的基本思路两个:1、还是新建一个全局的线程安全对象,然后通过自带的线程安全方法实现自增需求;2、处理全局变量时,通过Java 锁实现单线程操作自增,然后实现多线程情况下的线程安全。

事实证明还是第二种方案比较好,因为我暂时还没找到如果通过脚本去JMeter里面新建一个全局线程安全类对象的方法。所以我是新建一个全局变量,赋予一个初始值,然后在每个线程脚本里面去处理这个全局变量,步骤如下:1、获取对象锁(这里指的是存放所有全局变量的对象props);2、获取参数值,自增,重新赋值;3、释放对象锁,完成其他逻辑处理。

  • 首先新建一个简单的线程组和一个简单的请求:

  • 添加 JSR223 预处理程序(后置处理程序需要下一次次请求)

脚本内容:

props.put("MY",test()+"")
//log.info(props.get("MY
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值