在本地开发的时候有时候需要用到多线程去测试某些类或者方法是否有线程安全问题,由于本地开发机器硬件限制通过硬编码的方式往往难以达到多个线程同时访问的效果,这时可以考虑使用GroboUtils达到目的。顺便提一句,使用Junit是不行的,去看源代码会发现junit是System.exit退出用例执行的,主线程终止jvm都停了,其他线程肯定执行不了了。
使用GroboUtils可以去下载它的jar包,官网链接点击打开链接,或者使用maven依赖:
<dependency>
<groupId>net.sourceforge.groboutils</groupId>
<artifactId>groboutils-core</artifactId>
<version>5</version>
</dependency>
repository是 https://oss.sonatype.org/content/repositories/opensymphony-releases,然后就可以使用它进行测试了。代码很简单:
@Test
public void testThreadJunit() throws Throwable {
//Runner数组,相当于并发多少个。
TestRunnable[] trs = new TestRunnable [10];
for(int i=0;i<10;i++){
trs[i]=new ThreadA();
}
// 用于执行多线程测试用例的Runner,将前面定义的单个Runner组成的数组传入
MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs);
// 开发并发执行数组里定义的内容
mttr.runTestRunnables();
}
private class ThreadA extends TestRunnable {
@Override
public void runTest() throws Throwable {
// 测试内容
myCommMethod2();
}
}
public void myCommMethod2() throws Exception {
System.out.println("===" + Thread.currentThread().getId() + "begin to execute myCommMethod2");
}