join的底层原理
等待另一个线程执行结束
等待该线程死亡的时间最多为毫秒。超时为0表示永远等待。这个实现使用了This的循环。wait调用以this.isAlive为条件。当线程终止this时。调用notifyAll方法。建议应用程序不要在Thread实例上使用wait、notify或notifyAll。
public final synchronized void join(long millis) throws InterruptedException {
long base = System.currentTimeMillis();
long now = 0;
if (millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (millis == 0) {
while (isAlive()) {
wait(0);
}
} else {
while (isAlive()) {
long delay = millis - now;
if (delay <= 0) {
break;
}
wait(delay);
now = System.currentTimeMillis() - base;
}
}
}
```
`