等待线程执行终止的 join 方法


本篇内容为中的部分内容。 

  在项目实践中经常会遇到一个场景,就是需要等待某几件事情完成后才能继续往下执行,比如多个线程加载资源,需要等待多个线程全部加载完毕再汇总处理。Thread类中有一个join方法就可以做这个事情, join方法则是Thread类直接提供的,且join()是无参且返回值为void的方法。好比在B线程中调用A.join(),这时候B线程会让出执行权给A线程,直到A线程执行完或者过了超时时间之后再继续执行B线程。

 源码分析

从源码中可以看出 join() 方法底层还是通过 wait() 方法来实现的。

有三个线程T1,T2,T3,怎么确保它们按顺序执行?

在多线程中有多种方法让线程按特定顺序执行,你可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。为了确保三个线程的顺序你应该先启动最后一个(T3调用T2,T2调用T1),这样T1就会先完成而T3最后完成。

实例讲解

待补充