性能测试最常见的场景就是,在同一时间N个用户同时操作。之前简单的认为线程组数在0s内同时启动,不就实现了并发么。线程组中并发数、启动时间、循环次数、持续时间和定时器又有什么关联呢?

同步定时器Synchronizing Timer配置如图,主要有2个参数:

第一个参数,我自己翻译为每次集合的用户数,当线程组数达到这个数量时,触发一次并发。

第二个参数,超时时间,当数量没有达到集合用户数时,若超过了这个时间,也会触发并发。

下面通过具体的例子来讲解:

配置一:线程组数10,启动时间为0秒,无同步定时器

效果:按下start按钮后,所有线程组的HTTP请求几乎同时启动运行

配置二:线程组数10,启动时间为10秒,无同步定时器

效果:按下start按钮后,每1秒启动一个线程组,10秒完成所有10个线程组启动

配置三:线程组数10,启动时间为10秒,同步定时器中每次集合用户数10

效果:按下start按钮后,仍然是按照配置10秒内启动所有线程组,即每1秒启动一个线程组,但是HTTP请求并没有在线程组启动后立即发送,那是因为有同步定时器设置了10个为一个集合,所以会等待10秒钟,线程组个数凑够了10个之后,所有线程组的HTTP请求再同时发送

配置四:线程组数10,启动时间为10秒,同步定时器中每次集合用户数5

效果:按下start按钮后,每1秒钟启动一个线程组,但HTTP请求并没有立即发送,而是5秒钟后,当集合到了5个线程组后,5个HTTP请求一起发送,再过5秒钟后,剩余5个线程组的HTTP请求一起发送

其他配置

配置五:线程组数10,启动时间为10秒,同步定时器中每次集合用户数3,超时时间为0

这种配置…运行起来的效果…:按下start按钮,3秒后有3个线程组HTTP请求发送,6秒后有另3个线程组HTTP请求发送,9秒后又有3个线程组HTTP请求发送,然后就没有然后了,最后一个线程组的HTTP请求不会发送了,因为永远达不到集合数3。

配置六:线程组数10,启动时间为10秒,同步定时器中每次集合用户数3,超时时间为5000ms

开始时候的效果与上面配置类似,按下start按钮,3秒后有3个线程组HTTP请求发送,6秒后有另3个线程组HTTP请求发送,9秒后又有3个线程组HTTP请求发送。此时由于只剩一个线程,所以定然不会达到集合数量,但是设置了5秒超时,所以5秒钟后,最后一个线程组启动运行

思考

最后的疑问是,使用

配置1(线程组数10,启动时间为0秒,无同步定时器)

配置3(线程组数10,启动时间为10秒,同步定时器中每次集合用户数10)

都能实现同一时间多用户并发。区别在哪儿呢?

1、配置3中这些线程是慢慢启动的,然后同一个时间并发访问。而配置1中的所有线程同时启动且并发访问。当并发用户数很大很大时,配置1会使得压力服务器瞬间压力太大,可能会影响并发效果。

2、loadrunner中管这种并发叫集合点。所谓集合,感觉更像是军训时候,教官突然吹了一个哨子,说5分钟后在楼下紧急集合。此时大家会各自开始准备,有的人很快就跑到楼下了,有的人穿衣服比较慢,或者跑的太慢,最后一秒钟才到楼下,总而言之,5分钟后大家集合完毕,准备统一行动。说着说着,是不是感觉同步计时器Synchronizing Timer才像是真正的集合呢?嘿嘿,大概是吧

java线程集合点_Jmeter集合点(线程组和同步定时器)相关推荐

  1. Java哪些是线程安全的_Java集合中那些类是线程安全的

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...

  2. Java中,通过synchronizedXxx()将线程不安全的集合转换成线程安全的集合

    保证线程安全的方法 synchronizedXxx():该方法可以使指定的集合包装成线程安全的集合,并返回 例如: Collections.synchronizedList(List) 将线程不安全的 ...

  3. 验证ArrayList是线程不安全的集合

    package collectionSafe; import java.util.ArrayList;import java.util.Collections;import java.util.Lis ...

  4. arraylist线程安全吗_java集合----超详细图解(ArrayList线程安全解决三种解决方法!)...

    (注意:多线程情况下的判断,如果你能确定就两个线程(不包括main主线程或者是说GC),判断可以用if,但如果是多个线程则用while,否则会出现错误)ArrayList线程安全的几个问题解决(Has ...

  5. 【JUC】第二章 线程间通信、集合的线程安全

    第二章 线程间通信.集合的线程安全 文章目录 第二章 线程间通信.集合的线程安全 一.线程间通信 1.介绍 2.synchronized 方案 3.Lock 方案 4.定制化线程通信 二.集合的线程安 ...

  6. 考虑线程安全的List集合选择

    考虑线程安全的List集合选择 Vector 线程安全的List 总结 Vector Vector集合 底层是一种可增长对象数组,查询快,增删慢 线程安全,同步,但是因为所有方法都加了synchron ...

  7. 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称

    文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...

  8. 线程安全的CopyOnWriteArrayList集合

    CopyOnWriteArrayList 读取和写入源码简单分析(java.util.concurrent包下) 1. CopyOnWriteArrayList 读取操作的实现 读取操作没有任何同步控 ...

  9. (大集合)Linux进程和线程的基本编程、通讯和例程【杂记】

    Linux 进程 和 线程 的基本 编程.通讯 和 例程 注:[杂记]系列为日常网搜资料的堆砌而积累成之.如有错误恭谢指出.标识为"原创"其实不完全是,只是多引用再整理和加上自己的 ...

最新文章

  1. linux kill杀死进程
  2. Dbgrid 中表字段所在的列序号
  3. All Things OpenTSDB
  4. 快速入门MyBatis-Plus,看这一篇就够了。
  5. 文件管理搜不到Android 里的文件,Android:在原始文件夹中添加文件后窗口找不到内容容器视图...
  6. CentOS 挂载数据盘
  7. 编译原理第三章课后题
  8. win10如何调整计算机时间同步,Win10系统时间不准如何解决 win10系统设置时间同步的方法...
  9. 前端导出excel,单独设置表头
  10. RTCP丢包重传策略之NACK
  11. java毕业设计_基于MVC的公司报账系统
  12. 自动化测试策略?如何开展自动化测试?
  13. 2207.16吃货联盟设计大纲和全部代码
  14. leet343整数拆分
  15. RTP打包G711音频数据发送
  16. TSP问题—Hopfield神经网络算法实现
  17. Camera 冷启动阶段分解
  18. 如何在微信小程序里实现聊天室功能?
  19. html提取excel指定单元格数据,如何利用Excel函数公式快速提取出单元格中指定的数据...
  20. 连引用都答不上,凭什么说你是Java服务端开发

热门文章

  1. centos7配置IP地址CentOS7 修改hostname,ip地址以及hosts(永久生效)
  2. 敏捷开发系列学习总结(13)——Spotify敏捷模式详解三部曲第一篇:研发团队
  3. Java基础学习总结(137)——Java ClassLoader再总结
  4. Tomcat学习总结(10)——Tomcat多实例冗余部署
  5. Mysql学习总结(22)——Mysql数据库中制作千万级测试表
  6. 在linux下编译android下的opencv,使用cmake的方法
  7. Java web Tomcat Server总结
  8. Java -- JDBC 学习--调用函数存储过程
  9. Node.js:清理项目中的依赖
  10. 如何让div在整个页面中居中?