用多线程并发运行for以及Junit单元测试不支持多线程

本文介绍了一种在Java中使用for循环创建多线程并发执行的方法,通过自定义线程类并传递循环参数,实现了任务的并发处理。同时,讨论了在JUnit环境下多线程测试的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 简介

存在一个需求,在for循环中创建多线程并发执行循环中的代码
参考文章
for循环多线程并发执行

junit单元测试不支持多线程

2实现

  1. 创建线程类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;
	}
}
  1. 创建测试类并发运行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的弊端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值