1 简介
存在一个需求,在for循环中创建多线程并发执行循环中的代码
参考文章
for循环多线程并发执行
2实现
- 创建线程类ThreadCsdn继承Thread
public class ThreadCsdn extends Thread{
private int i;
public void run() {
commonMethod(i);
}
// 并发执行的逻辑处理
private void commonMethod(int num) {
System.out.println(Thread.currentThread().getName()+"处理合作方"+num+"的业务");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public ThreadCsdn(int i){
this.i = i;
}
}
- 创建测试类并发运行for
public static void main(String[] args) {
ThreadCsdn csdn = null;
for(int i=0; i<10; i++){
csdn = new ThreadCsdn(i);
csdn.start();
}
}
执行结果
Thread-3处理合作方3的业务
Thread-1处理合作方1的业务
Thread-2处理合作方2的业务
Thread-4处理合作方4的业务
Thread-5处理合作方5的业务
Thread-6处理合作方6的业务
Thread-8处理合作方8的业务
Thread-9处理合作方9的业务
Thread-0处理合作方0的业务
Thread-7处理合作方7的业务
本来以为这个的实现很难,通过别人的点播,在创建线程类的时候传入for循环执行所需的参数,困难迎刃而解。
3.碰到的问题
之前是用junit 单元测试,出现创建的子线程任务还没结束,整个程序就被强迫结束了,
Thread-0处理合作方0的业务
就像这样,我之前还在想是不是代码问题,还请教了好几个人,最后百度到了是junit的弊端