Jmeter中的ThreadLocal线程变量

Jmeter中的ThreadLocal线程变量,第1张

Jmeter中的ThreadLocal线程变量 背景

        使用Jmeter进行并发定制并发测试的时候,必须要考虑到线程的安全性。测试中的每个线程是不是都要有自己的独立变量,如果不进行控制就会产生多个线程 *** 作同一个变量的情况,尤其是在定制测试中具有连接性质的对象时候,就会产生无法预见的后果。我这里的情况就是写好的Jmeter定制函数,单线程运行的时候一切正常,一旦并发就会报各种交易失败。

问题解决

        上一篇总结中使用protected修饰的类变量,在同一个包不同的类中直接使用,非常方便。不过简单的protected修饰变量就会出现多个线程使用同一个变量的问题,仍然解决不了问题。这时候就要用到ThreadLocal,在每个线程中都建立自己进程内的局部变量,这样就能保证每个进程有自己的连接对象了。

        创建线程局部变量Bp_local,并声明变量类型为Bp_Target。这是在创建进程的时候在线程对象中预留一块内存保存Bp_Target型变量。

public class test{

        protected static ThreadLocal Bp_local=new Threadlocal<>(); 

        public void  init(){

                Bp_Target BP=new Bp_Target();

                Bp_local.set(BP);

        }        

}

         执行init()后,先正常生成的Bp_Target型变量BP,然后通过set方法把这个变量保存在预留的内存中。

        如何使用这个变量?通过以下方法:

test.Bp_local.get();

         这样就可以在别的函数中直接使用该线程中自己的变量了。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5597928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存