【问题标题】:Single thread initialization for Jmeter with multiple sampler具有多个采样器的 Jmeter 的单线程初始化
【发布时间】:2016-05-26 14:07:11
【问题描述】:

我通过扩展 Jmeter 的 AbstractJavaSamplerClient 实现了我自己的采样器。在设置测试中,我想从目录中读取一堆文件并填充请求列表,然后在 runTest 阶段与所有线程/采样器实例共享它。目前,我使用 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。但是我想知道我是否可以完全避免锁定并在开始时有一个单线程初始化阶段,然后让其他线程继续。

【问题讨论】:

    标签: java multithreading jmeter


    【解决方案1】:

    为什么不把它组织成线程组。 您可以添加一个带有线程的“启动线程组”来进行初始化。 然后你可以添加一个标准的“线程组”来做你剩下的事情

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

    【讨论】:

    • 你的意思是我创建了两个线程组,一个用于单个线程来填充它,第二个用于设置它的采样器特定部分?有什么例子可以给我吗?
    • 是的,我在上面编辑了我的原始答案。请让我知道这是否适合您
    • 我没有看到图片,可能是您忘记添加了。一个简单的问题,填充列表可以跨线程组共享吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多