Junit本身是不支持多线程的,可以通过一个第三方的工具GroboUtils实现。
具体的代码如下:
@Test
public void LessThanLimit() throws InterruptedException {
// 构造一个Runner
TestRunnable runner = new TestRunnable() {
@Override
public void runTest() throws Throwable {
// 要执行的操作
AccessId accessId = new AccessId(serviceId, group, version); // 提供需要调用的服务三要素
responeData = RPCConsumer.invoke(accessId, DATA); // 调用服务
System.out.println("响应报文为:" + responeData);
}
};
int runnerCount = 5;
// 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();
//可以在这里进行异常信息的判断
}
// 可以在这里判断代码的返回值
Assert.assertEquals(DATA, responeData);
}
需依赖GroboUtils的其中两个包
1、下载GroboUtils的工具包Zip包解压,解压后的目录结构如下
2、拷贝GroboUtils-5-core.jar、core目录中的GroboTestingJUnit-1.2.1-core.jar两个jar包到本地的项目中进行依赖
Java多线程
2018年11月5日
17:36
java多线程的实现由多种方法,再次仅介绍一种,通过继承thread类的方法实现。
package test;
//通过继承Thread类型实现多线程的方法
public class ThreadDemo extends Thread {
static int result = 0;
public static void main(String[] args) throws InterruptedException {
// 初始化实例,并执行run方法,start就是执行run方法
ThreadDemo thread = new ThreadDemo();
thread.start();
// join方法的意思是等待线程结束
thread.join();
// 下面的代码可以达到和上面两行同样的效果,如果不是run方法,则直接写方法名即可
ThreadDemo thread2 = new ThreadDemo();
thread2.start();
thread2.join();
System.out.println(result);
}
public void run1() {
for (int i = 0; i < 10000; i++) {
result = result + i;
}
}
@Override
public void run() {
for (int i = 0; i < 10000; i++) {
result = result + i;
}
}
}
方法2
public class Test {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
// TODO
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
// TODO
}
});
t1.start();
t2.start();
}
}
方法3:
ExecutorService executorService = Executors.newFixedThreadPool(3);
executorService.submit(new Runnable() {
@Override
public void run() {
}
});
executorService.submit(new Runnable() {
@Override
public void run() {
}
});