在很多情况下,主线程生成并启动了子线程,如果子线程里要进行大量的耗时运算,主线程往往将于子线程之前结束,但是如果主线程处理完其它事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。
从表现来看,主线程调用子线程的join()方法,导致主线程阻塞,直到子线程执行完毕后,才回到主线程中。"join"的命名来源于posix标准,子线程join到主线程(启动程序的线程,比如C语言执行main函数的线程),阻塞线程仅仅是一个表现,而非目的。其目的是等待当前线程执行完毕后,“计算单元”与主线程汇合,即主线程与子线程汇合之意。
更详细的,可以了解一下fork/join的相关理论。