日期:2014-05-20  浏览次数:20749 次

java中线程状态问题?
java中线程有六种状态:
  new、runnable、 blocked、waiting、timed waiting、terminated

对于runnable状态:《core java》中说是可能正在运行也可能没有运行。
我在想:如果没有运行,那就肯定处于 阻塞或者等待状态。runnable怎么会包含两种情况?

------解决方案--------------------
我的理解 runnable是种就绪状态,就等操作系统给它分配时间片来执行了。这并不同于阻塞或者等待

------解决方案--------------------
1L说对了一半
javadoc里有说明,runnable就是处于运行中的线程状态,要知道线程是CPU随机分配时间执行的,所以即使是运行中的线程,也有可能CPU被系统收回而暂时没有执行,此时,并不会因为CPU被收回而改变线程的状态,也就是说即使这个时候线程停止没有被执行(没有分配到CPU),也还是runnable状态,所以core java里说的是这个意思
------解决方案--------------------
可以参考一下这张图。
http://blog.csdn.net/jiafu1115/article/details/6804386