RedSpider1 / concurrent

这是RedSpider社区成员原创与维护的Java多线程系列文章。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于Thread.join(long)使线程进入超时等待状态的疑问

renjiancheng opened this issue · comments

章节
4.3.3

相关截图或文字
image

疑问
这里提到调用Thread.join(long)方法会使线程进入超时等待状态,请问是让这句代码所在的执行线程进入超时等待状态(例子中是main线程)还是让调用此方法的线程实例对象进入超时等待状态呢?文章中没有详细写,而且代码注释写到此时输出a线程的状态会为超时等待,但是a线程的超时等待状态极有可能是在main线程调用a.join(1000L)之后,执行了Thread.sleep(2000L)的sleep导致的呀,希望解惑!

这个是一个实例方法,所以是线程实例对象进入超时等待状态。
a线程的状态就是 调用sleep导致的。这里你和4.3.2对比就知道了。4.3.2没加超时,这里会是 TERMINATED。4.3.3加了超时,所以没等sleep执行完,就往下走了,所以才会是TIMED_WAITING