关闭

java的并发测试

标签: java并发测试
1566人阅读 评论(0) 收藏 举报
分类:

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次,但是事实非如此,见下图:
这里写图片描述

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:62468次
    • 积分:984
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:26篇
    • 译文:0篇
    • 评论:19条
    最新评论