Thread类的方法中有一个join()方法,它是普通的实例方法,根据Java api,该方法有如下三种形式:
void join(): Waits for this thread to die.
void join(long millis): Waits at most millis milliseconds for this thread to die.
void join(long millis, int nanos): Waits at most millis milliseconds plus nanos nanoseconds for this thread to die.
该方法的作用是“等待该线程终止”,一直等待,直到程终止,而带参数的方法的作用是“ 等待该线程终止,至多等待多少毫秒数 (或毫秒数+纳秒数)”。
在此之前,我对这个方法一直有两个疑问,困惑不解:
- 为什么这个方法的作用是等待该线程终止,为什么它的名字是“加入”的意思?
- 在这个等待的关系中,到底是谁等待谁?
在看了很多人的博客、看了这个方法的源码、看了《Java多线程编程核心技术》这本书和实践之后,我的理解如下,作为自我学习总结。
1. join()的源码分析
public final