源码:
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;
}
}
}
在 Main 方法里,当 Thread 实例 t 启动后,调用 t.join, 那 jion 里的 isAlive() 判断是 t 的状态吧?
join 里面的 wait()呢?是 t wait 还是 main thread wait 了?
如果是 t wait 了,有点想不明白为什么 t.join 了,main 线程会等待 t 线程完成才继续~~~
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于