源码:
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 线程完成才继续~~~
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于