怎么让当前线程等待另一个线程完成之后再去执行

 我来答
百度网友faadf46
高粉答主

2020-03-10 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:73.9万
展开全部

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

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

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

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

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

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

sj...8@sina.com
推荐于2018-03-07 · 超过199用户采纳过TA的回答
知道小有建树答主
回答量:486
采纳率:100%
帮助的人:278万
展开全部
可以用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<1000; i++)
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();
}
如果线程在该时间片内完成,线程就结束了,如果未完成,系统会将该线程放入就绪队列,等待下CPU再度调度运行它,而且是接着上次执行的状态接着执行,如果是从头开始的话,那前面的执行不都是在浪费时间,又何须时间片的概念,还不如让该线程一次执行完,你说是不是,开动你的大脑,其实思想很简单。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式