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

解决方案 »

  1.   

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

  2.   

    1L说对了一半
    javadoc里有说明,runnable就是处于运行中的线程状态,要知道线程是CPU随机分配时间执行的,所以即使是运行中的线程,也有可能CPU被系统收回而暂时没有执行,此时,并不会因为CPU被收回而改变线程的状态,也就是说即使这个时候线程停止没有被执行(没有分配到CPU),也还是runnable状态,所以core java里说的是这个意思
      

  3.   

    可以参考一下这张图。
    http://blog.csdn.net/jiafu1115/article/details/6804386
      

  4.   

    2L说的正确。
    楼主可以根据字面意思来理解,runnable可运行的意思,既然是"可以运行",当然也可能"不可以运行",可不可以运行是根据有没有获得cpu的使用权。而running是运行中的意思,就是获得cpu使用权。