Jmeter的单线程初始化,带有多个采样器

时间:2016-02-15 15:32:21

标签: java multithreading jmeter

我通过扩展Jmeter的AbstractJavaSamplerClient实现了我自己的Sampler。在设置测试中,我想从dir读取一堆文件并填充请求List,然后在runTest阶段与所有Threads / Sampler实例共享它。目前我使用Lock来允许单个线程在开始时访问并填充它,然后其他人不必费心去重做任务。代码如下所示:

@Override
    public void setupTest(JavaSamplerContext context) {
       ...
       MyLock.lock();
       try {
            // setup requests
            if (MyFileList == null) {
               // read the files and populate MyFileList
            }
        finally {
            MyLock.unlock();
       }
}

每次Sampler线程点击此锁定时,它都会测试是否填充了MyFileList,如果没有,它会填充,否则它将释放锁定。我为此使用了ReentrantLock。但我想知道我是否可以完全避免锁定,并在开始时有一个线程初始化阶段,然后让其他线程继续。

1 个答案:

答案 0 :(得分:1)

enter image description here为什么不把它组织成线程组。 您可以添加一个带有线程的“启动线程组”来执行您的init。 然后你可以添加一个标准的“线程组”来完成剩下的工作

在下面的图片中,您可以看到如何添加首先运行的“setUp Thread Group”,它将执行您想要的设置 在这里,您将添加采样器以执行您的设置 然后再次单击“测试计划”,然后转到添加 - >线程(用户) - >线程组 并且你将在这里添加一个常规的旧线程组,以完成所有其他的东西

相关问题