You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让JMeter中Thread1执行完控制器所有取样器后再启动Thread2

JMeter线程顺序执行配置方案

你的需求是让线程组内的线程依次完整执行Login→permission→logout事务流程,即前一个线程完成所有取样器后,下一个线程才启动。可以通过以下两种方式实现:

方法一:使用临界区控制器(推荐,无需脚本)

  • 在原有线程组下添加临界区控制器(Critical Section Controller)
  • 将包含三个取样器的事务控制器,整体移动到临界区控制器内部
  • 保持临界区控制器默认配置即可

临界区控制器会保证同一时间只有一个线程进入执行,因此每个线程都会完整跑完整个事务流程后,下一个线程才会启动执行,完全符合预期顺序。

方法二:通过BeanShell脚本控制线程执行顺序

如果需要更灵活的控制逻辑,可以用脚本实现:

  1. 在事务控制器的最前端添加BeanShell PreProcessor,插入以下代码:
    int threadNum = ctx.getThreadNum();
    int finishedThreads = Integer.parseInt(vars.get("finishedThreads") == null ? "0" : vars.get("finishedThreads"));
    while (threadNum > finishedThreads) {
        Thread.sleep(1000);
        finishedThreads = Integer.parseInt(vars.get("finishedThreads") == null ? "0" : vars.get("finishedThreads"));
    }
    
  2. 在事务控制器的最后一个取样器(logout)下方添加BeanShell PostProcessor,插入以下代码:
    int threadNum = ctx.getThreadNum();
    vars.put("finishedThreads", String.valueOf(threadNum + 1));
    
  3. 在线程组配置中勾选**“延迟创建线程直到需要”**

该脚本通过全局变量记录已完成的线程数,让后续线程等待前序线程执行完成后再启动。

内容的提问来源于stack exchange,提问作者Moni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:15:56