【发布时间】: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