java的并发测试
2016-05-30 20:34
357 查看
1. 什么是并发测试
通过代码的编写和工具的利用模拟多线程(多用户)来执行某一个业务操作。来确保业务在多线程的环境下业务(或者说数据的)的正确性2. 为什么做并发测试
我们常常听到线上环境在高并发的情况下。出现用户的账户余额不对,一个手机号注册了两个账户这类情况。所以我们有必要模拟大量用户的并发测试3. 如何做并发测试
我在这儿是使用的是testng的方法。见如下实例(在多线程的环境下,非线程安全)package com.one; import java.util.HashMap; import org.testng.annotations.AfterTest; import org.testng.annotations.Test; public class UnsafeCountingFactorizer { private long count=0; public long getCount(){ return count; } @Test(invocationCount=20000,threadPoolSize=1000) public void service() { HashMap<String, String> hashMap = new HashMap<String,String>(); hashMap.put("1", "1"); hashMap.put("1", "1"); hashMap.put("1", "1"); hashMap.put("1", "1"); ++count; HashMap<String, String> hashMap2 = new HashMap<String,String>(); hashMap2.put("1", "1"); hashMap2.put("1", "1"); hashMap2.put("1", "1"); } @AfterTest public void endService(){ System.out.println("count value{}:"+count); } }
参数讲解
invocationCount:注解的方法执行多少次,threadPoolSize:启动多少个线程去执行。两个参数合起来的含义是启动多少个线程一共执行多少次
结果
预期的结果是20000次,但是事实非如此,见下图:
相关文章推荐
- java34: 流
- maven整合spring+springMvc+Mybatis+Mysql
- 【Java Learning】重载、多态和动态绑定——Overloading、Ploymorphism&Dynamic binding
- Logistic Regression Java程序
- MyEclipse10配置自动补全/字体大小/行号/背景颜色
- Java代码实现AP向CP侧发送AT指令
- 搜集整理java中GC的理解
- java 基于jxl解析xls以及解决丢失精度问题
- springmvc中@PathVariable和@RequestParam的区别
- eclipse的版本
- 爱奇艺视频解析(Java代码)(16.5.30更新)
- Easy-题目34:119. Pascal's Triangle II
- Java 并发工具包 java.util.concurrent 用户指南
- 69道Spring面试题和答案
- Java跨域设置
- Java反射机制 初步(二)
- Java反射机制 初步(一)
- Java之IO操作总结
- SPRING SECURITY 拦截静态资源
- SPRING SECURITY 拦截静态资源