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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么让当前线程等待另一个线程完成之后再去执行相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

参考技术A 可以用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再度调度运行它,而且是接着上次执行的状态接着执行,如果是从头开始的话,那前面的执行不都是在浪费时间,又何须时间片的概念,还不如让该线程一次执行完,你说是不是,开动你的大脑,其实思想很简单。

线程和异步的分别与联系

多线程:多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码。多线程可以实现线程间的切换执行。

异步:异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。


   异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。

以上是关于怎么让当前线程等待另一个线程完成之后再去执行的主要内容,如果未能解决你的问题,请参考以下文章

JAVA多线程知识总结

JavaSE---线程的控制

MFC主线程等待另一个线程结束

Java中的并发工具类

C ++如何等待在另一个线程上执行的方法然后主线程完成(VS2010)

线程和异步的分别与联系