2013-11-28 63 views
-4

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

+7

您可以轻松地尝试此操作。 – Maroun

+0

'JDK + IDE = Answer' –

+0

欢迎来到StackOverflow。请阅读http://stackoverflow.com/about的关于页面 - 您可以阅读关于提问的一些简单规则;其中之一是:“不要问你还没有试图找到答案(显示你的工作!)”。所以,在将来,请先尝试自己找到答案(例如尝试和阅读API文档)。然后创建问题并告诉我们,你做了什么(例如阅读和尝试)以及为什么它没有解决你的问题/问题(例如,文档不可理解,测试的行为如预期)。 –

回答

0

the javadoc

等待该线程死亡。

所以,当线程死亡时,join()返回。

1

的Javadoc开始说的Thread.join(long)

此实现使用this.wait电话空调上this.isAlive的循环。当一个线程终止时,调用this.notifyAll方法。

这是描述为Thread.isAlive()

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

您可以假设线程的实现可以防止在run()方法中发生异常。因此,在任何情况下,当run方法终止时(无论是否正常或因异常),可以继续等待join()的其他线程。

至于理由:这当然是为了让你的程序不会陷入无尽的等待状态。