一个程序的一个或多个线程正在等待完成网络 这个怎么解决啊

一个程序的一个或多个线程正在等待完成网络 这个怎么解决啊,第1张

可以用join()方法,楼主试试下面的例子,看看是不是你想要的:

public static class T extends Thread{

private final String name

public T(String name){

this.name = name

}

@Override

public void run() {

super.run()

for(int i=0 i<1000i++)

System.err.println(name + "\t" + i)

}

}

public static void main(String[] args) throws Exception{

T t = new T("t1")

T t2 = new T("t2")

t.start()

t.join()

t2.start()

}

1、这里简单的做一个小demo,项目的结构如图所示,就一个文件即可。

2、使用for循环将num每次减一输出,这里是使用的是实现runnable接口。

3、这里创建了三个进程作为多个线程的测试,代码如图所示,。

4、然后运行我们的代码,在输出栏可以看到这里三个线程将num的值一起减到0。

5、让程序在执行for循环中的一次循环时只有一个线程 *** 作,如图所示 我们将其睡眠一个时间。

6、然后再次多次运行代码 你会看到三个线程都在不同占比的执行循环减 *** 作,如果将sleep中的数字增加到一定数值时,你会看到三个线程分布的越有序。

首先子线程必须由主线程启动,所以严格意义上的“子线程结束后再执行主线程”是不可能实现,你的意思应该是:主线程创建完子线程后,等待子线程退出,在继续执行。

你的代码基本没有多大问题,只是 Join 方法位置放置不对。

thread1.Start()// 先启动所有子线程

thread2.Start()

thread3.Start()

thread4.Start()

thread5.Start()

thread1.Join() // 然后在等待子线程退出

thread2.Join()

thread3.Join()

thread4.Join()

thread5.Join()

你先前的代码:

thread1.Start() // 线程1 启动

thread1.Join()// 等待 线程1 退出,线程1 未退出前,后面代码无法执行

thread2.Start() // 以下代码,均同上所述。

thread2.Join()

thread3.Start()

thread3.Join()

thread4.Start()

thread4.Join()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11226553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存