【发布时间】:2015-04-07 08:27:07
【问题描述】:
SO 共识和网上几乎所有的 Java 线程状态图似乎都有出入;具体来说,关于在调用notify() 或notifyAll() 之后的线程状态转换从 WAITING...
- WAITING never 直接进入 RUNNABLE
- 线程一直在等待,直到收到通知...然后它 becomesBLOCKED...
- 一旦这个线程被通知,它will not be runnable...这是..阻塞状态。
所以对SO的共识是:调用notify()或notifyAll()后,线程从WAITING转换为BLOCKED;下图以绿色显示了这种过渡。
问题
为什么大多数state diagrams on the web 说明了从WAITING 到RUNNABLE 的转换,而不是BLOCKED?红色表示不正确的过渡;我错过了什么吗?
【问题讨论】:
-
根据您的评论,我为什么要问绘制图表的人他们并不了解? :-)
-
我说“不要或没有”。如果你问他们,他们可能会发现他们错了。或者他们可能已经发现了。
-
所以你是说我的图表比大约 106,000 个 Google 结果更准确?地狱!
-
如果是这样,
TIMED_WAIT有什么特别之处?为什么直接回到RUNNABLE,而不是转到BLOCKED? -
如果您需要,还有一些更清晰的答案。 stackoverflow.com/q/15680422/2361308
标签: java multithreading thread-state java-threads