博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程测试工具(GroboUtils)的使用
阅读量:6158 次
发布时间:2019-06-21

本文共 2309 字,大约阅读时间需要 7 分钟。

hot3.png

Maven依赖方式:

net.sourceforge.groboutils
groboutils-core
5

注:需要第三方库支持:

Repository Opensymphony Releases
Repository url https://oss.sonatype.org/content/repositories/opensymphony-releases
import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;import org.junit.Before;import org.junit.Test;import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner;import net.sourceforge.groboutils.junit.v1.TestRunnable;/** *  * @Package testController * @Description: 多线程并发测试 * @author 刘伟 15818570028@163.com * @date 2017年4月12日 上午10:28:20 * @version V1.0 */public class TestMultiThread {	int count = 0;// 并发测试count++	@Before	public void setup() {	}	/**	 * 	 * @Title: MultiRequestsTest	 * @Description: 使用groboutils并发测试	 * @throws InterruptedException	 */	@Test	public void MultiRequestsTest() throws InterruptedException {		// 构造一个Runner		TestRunnable runner = new TestRunnable() {			@Override			public void runTest() throws Throwable {				// 测试内容				for (int i = 0; i < 10000; i++) {					count++;				}			}		};		int runnerCount = 2;		// Rnner数组,想当于并发多少个。		TestRunnable[] trs = new TestRunnable[runnerCount];		for (int i = 0; i < runnerCount; i++) {			trs[i] = runner;		}		// 用于执行多线程测试用例的Runner,将前面定义的单个Runner组成的数组传入		MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs);		try {			// 开发并发执行数组里定义的内容			mttr.runTestRunnables();		} catch (Throwable e) {			e.printStackTrace();		}		TimeUnit.SECONDS.sleep(1);		System.out.println(count);	}	@Test	public void test() throws InterruptedException {		Runnable run = () -> {			for (int i = 0; i < 10000; i++) {				count++;			}		};		multithreads(run, 2);		TimeUnit.SECONDS.sleep(1);		System.out.println(count);	}	/**	 * 	 * @Title: multithreads	 * @Description: 自己实现的多线程测试	 * @param run	 * @param thread	 */	public void multithreads(Runnable run, int thread) {		CountDownLatch countDown = new CountDownLatch(thread);		for (int i = 0; i < thread; i++) {			new Thread(new Runnable() {				@Override				public void run() {					try {						run.run();					} finally {						countDown.countDown();					}				}			}).start();		}		try {			countDown.await();		} catch (InterruptedException e) {			e.printStackTrace();		}	}}

参考资料:

转载于:https://my.oschina.net/u/1266221/blog/740256

你可能感兴趣的文章
jdk1.7和jdk1.8的String的getByte方法的差异
查看>>
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>
java
查看>>