A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ф福@ 御 中级黑马   /  2014-5-20 20:10  /  3408 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

希望有个图解,给看看。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

6 个回复

倒序浏览
这个图片就是

2014-05-20_215126.png (120.94 KB, 下载次数: 99)

2014-05-20_215126.png

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
线程的5种状态:创建,就绪,运行,阻塞,终止。
  创建:在程序中使用构造方法创建了一个线程过后。代表方法为Thread类中的new Thread()或者new Thread(Runnable target,String name)。
  就绪:新建线程对象后,调用该线程的start()方法就可以启动线程了,线程被启动后,进入就绪状态,此时线程进入可运行线程池中排队,登陆CPU服务,这表明它具有了运行条件。
  运行:绪状态获得处理器资源,线程就进入运行状态。此时自动调用线程对象的run()方法,run方法定义了该线程的操作或者功能主体。
  阻塞:阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:
    (一)、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。

    (二)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。

    (三)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

  死亡:线程调用stop()方法时或者run()方法执行结束后,即处于死亡状态。
回复 使用道具 举报 1 0
本帖最后由 曲佳奇 于 2014-5-21 10:11 编辑

参考了很多资料 线程执行start()之后应属于就绪状态  也就是毕老师视频中说的临时阻塞状态 而不是运行状态

1.新建状态(New):新创建了一个线程对象.
2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权.
3.运行状态(Running):就绪状态的线程获取了CPU,执行程序代码.
4.阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行.直到线程进入就绪状态,才有机会转到运行状态.阻塞的情况分三种:
   1)等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中.
   2)同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。
   3)其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态.当sleep()状态超时 join()等待线程终止或者超时 或者I/O处理完毕时,线程重新转入就绪状态.
5.死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期.

thread_state.jpg (35.33 KB, 下载次数: 96)

thread_state.jpg
回复 使用道具 举报
谢谢各位的图解
回复 使用道具 举报
老毕画的  大哥将就一点啦

线程状态图.jpg (47.07 KB, 下载次数: 89)

线程状态图.jpg
回复 使用道具 举报
学习一下。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马