java线程中的并发

时间:2013-11-28 07:26:27

标签: java concurrency

两个线程(t1和t2)正在运行。 t1在t2上调用join。假设t2因某些异常而死,那么等待线程t1的行为是什么,即线程t1将无限期地保持在阻塞状态,或者在一段时间后恢复到可运行状态......不清楚关于行为,更具体地说是背后的基本原理。

2 个答案:

答案 0 :(得分:1)

JavaDoc必须说Thread.join(long)

  

此实现使用this.wait调用this.isAlive的循环。当线程终止时,将调用this.notifyAll方法。

这是Thread.isAlive()的描述:

  

测试此线程是否存活。如果一个线程已经启动并且还没有死亡,那么它就是活着的。

您可以假设保护Thread的实现免受run()方法内发生的异常的影响。因此,在任何情况下,当run方法终止时(无论是否正常或由于异常),等待join()的其他线程可以继续。

至于理由:当然,这是因为你的程序不会陷入无休止的等待状态。

答案 1 :(得分:0)

来自the javadoc

  

等待此线程死亡。

因此,当线程死亡时,join()返回。