如何使“主线程”等待“子线程”执行结束后再继续执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使“主线程”等待“子线程”执行结束后再继续执行相关的知识,希望对你有一定的参考价值。

觉得设置一个标记比较好 boolean flag=false;
例如一个子线程:
class childThread extends Thread

.....
while(true)

public void run()

.......
flag=true//当子线程运行完成后标记设为true




然后根据该标记的值判断子线程是否执行。

你可以这样写:
....
childThread ct=new childThread();

ct.start();

if(ct.flag == false)

Thread.sleep(10);[color=#00FF00]当子线程没有执行完毕,就让主线程等待[/color].....

如果不设置标记判断 而是直接让主线程 Thread.sleep(xxx)睡眠是不合理的。
原因是:
由于主线程和子线程是并发运行的 睡眠的时间不好控制 如果时间太短 可能子线程没有运行完主线程就又开始运行了。如果时间太长 影响程序的执行效率 所以这个时间是不好控制的。
上面有的直接 Thread.sleep(100);完全是想当然的想法。 直接这样写有可能是会出错的 你可以试下。
所以我觉得还是设置一个标记比较好。
参考技术A 在主线程里调用子线程,这样“子线程”执行结束后,才会继续执行主线程的后续程序。

以上是关于如何使“主线程”等待“子线程”执行结束后再继续执行的主要内容,如果未能解决你的问题,请参考以下文章

windows API主线程如何等待子线程结束后再继续运行

c++/mfc 子线程结束后再来执行主线程下操作 该怎么处理

主线程啥都没做,就会等待子线程结束。这是为啥?

Java主线程如何等待子线程执行结束(转)

设置主线程等待子线程执行的方法

如何实现java主线程等待子线程执行完毕之后再执行