怎么让当前线程等待另一个线程完成之后再去执行
2个回答
展开全部
1、这里简单的做一个小demo,项目的结构如图所示,就一个文件即可。
2、使用for循环将num每次减一输出,这里是使用的是实现runnable接口。
3、这里创建了三个进程作为多个线程的测试,代码如图所示,。
4、然后运行我们的代码,在输出栏可以看到这里三个线程将num的值一起减到0。
5、让程序在执行for循环中的一次循环时只有一个线程操作,如图所示 我们将其睡眠一个时间。
6、然后再次多次运行代码 你会看到三个线程都在不同占比的执行循环减操作,如果将sleep中的数字增加到一定数值时,你会看到三个线程分布的越有序。
展开全部
可以用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再度调度运行它,而且是接着上次执行的状态接着执行,如果是从头开始的话,那前面的执行不都是在浪费时间,又何须时间片的概念,还不如让该线程一次执行完,你说是不是,开动你的大脑,其实思想很简单。
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再度调度运行它,而且是接着上次执行的状态接着执行,如果是从头开始的话,那前面的执行不都是在浪费时间,又何须时间片的概念,还不如让该线程一次执行完,你说是不是,开动你的大脑,其实思想很简单。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询