多线程测试代码
2018-02-14 21:44
197 查看
package com.yy.read;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Test {
//开启10个线程 执行
static ExecutorService es =Executors.newFixedThreadPool(6);
public static void main(String[] args) throws Exception {
//并发请求1
new Thread(new Runnable() {
@Override
public void run() {
try {
dobussiness("A","B");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
//并发请求2
new Thread(new Runnable() {
@Override
public void run() {
try {
dobussiness("C","D");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
//并发请求3
new Thread(new Runnable() {
@Override
public void run() {
try {
dobussiness("E","F");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
private static void dobussiness(String taskAName,String taskBName) throws InterruptedException, ExecutionException {
//同步多线程
Callable<String> taskA= getnewCallable(taskAName);
Callable<String> taskB = getnewCallable(taskBName);
Set<Callable<String>> tasks = new HashSet<>();
tasks.add(taskA);
tasks.add(taskB);
//执行所有的callable
List<Future<String>> list=es.invokeAll(tasks);
for (Future<String> future : list) {
if(!future.isDone())
throw new RuntimeException(future.get()+"尚未完成");
System.out.println("处理结果:"+future.get());
}
}
public static Callable<String> getnewCallable(String taskName) {
return new Callable<String>() {
@Override
public String call() throws Exception {
System.out.println(Thread.currentThread().getName() + "执行任务"+taskName);
int i = new Random().nextInt(10) ;
System.out.println("处理["+i+"]秒");
Thread.currentThread().sleep(i* 1000);
System.out.println("处理["+i+"]秒结束");
return Thread.currentThread().getName();
}
};
}
}
相关文章推荐
- windows下,多线程c代码嵌入python例子,测试通过
- 在开启多线程时,用junit测试,到连接数据库代码时,junit自动停止,而且没有报错误。
- 匿名函数应用-多线程测试代码
- IOS开发-多线程队列测试代码
- Python实现的多线程http压力测试代码
- 多进程多线程测试代码
- Java 多线程 生产者与消费者问题测试代码
- 【UnixC多线程\进程】多线程和多进程C代码及测试截图
- Java 多线程测试示例代码 (论坛回复摘要)
- 实现一个无锁的Stack,并写一段测试代码(多线程访问),证明这个Stack是线程安全的。给出程序以及运行的截图。
- 使用epoll和多线程实现服务器和客户端的代码
- PHP中实现异步调用多线程程序代码
- Java 测试代码模板
- java代码的测试手段
- 学习多线程代码遇到内存泄露
- jfreechart测试代码
- yolo测试代码梳理
- 一个标准的REST API测试代码
- php 单文件测试代码时必加入的代码
- GraphicsMagick性能测试(二) - 开启多线程对性能的影响