我通过扩展 Jmeter 的 AbstractJavaSamplerClient 实现了自己的 Sampler。在设置测试中,我想从目录中读取一堆文件并填充请求列表,然后在运行测试阶段与所有线程/采样器实例共享它。目前,我使用锁是为了允许单个线程在开始时访问和填充它,然后其余的就不用费心重做任务了。代码如下所示:
@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。但我想知道是否可以完全避免锁定并在开始时有一个单线程初始化阶段,然后让其他线程继续进行。
最佳答案
为什么不将其组织到线程组中。 您可以添加一个带有线程的“启动线程组”来执行 init。 然后你可以添加一个标准的“线程组”来完成剩下的事情
在下图中,您可以看到如何添加“setUp Thread Group”,这将首先运行,它将执行您想要完成的设置 在这里您将添加采样器来完成您的设置 然后再次单击您的“测试计划”,然后转到添加->线程(用户)->线程组 您将在此处添加一个常规的旧线程组,以完成其余所有工作
关于java - 具有多个采样器的 Jmeter 的单线程初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35413181/