黑马程序员技术交流社区

标题: 关于线程的状态问题! [打印本页]

作者: 悟中生有    时间: 2013-12-13 22:52
标题: 关于线程的状态问题!
线程的状态:
1,被创建
2,运行(临时状态<------>冻结状态)
3,结束
其中临时状态就是:具备运行资格但没有得到执行权;冻结状态就是:具备运行资格,暂时放弃了执行权。
不知道我这样理解有没有不妥的地方?
希望高手指点一下!谢谢!

作者: 一个人旅行    时间: 2013-12-13 22:59
你看是这样么

p_image-1499.png (35.1 KB, 下载次数: 37)

p_image-1499.png

作者: 悟中生有    时间: 2013-12-13 23:05
一个人旅行 发表于 2013-12-13 22:59
你看是这样么

应该差不多,临时状态应该在被创建后运行前,而冻结状态应该在运行后和结束前。这样理解是不是会更容易些?
作者: 悟中生有    时间: 2013-12-13 23:10
悟中生有 发表于 2013-12-13 23:05
应该差不多,临时状态应该在被创建后运行前,而冻结状态应该在运行后和结束前。这样理解是不是会更容易些 ...

刚才看到论坛高手以前的回答,感觉这个更清晰些,共同学习学习。
java中,每个线程都需经历新生、就绪、运行、冻结和死亡五种状态,线程从新生到死亡的状态变化称为生命周期。用new运算符和Thread类或其子类建立一个线程对象后,该线程就处于新生状态。
新生(被创建)--->就绪:通过调用start()方法  
就绪(临时状态,说就绪更准确点)--->运行:处于就绪状态的线程一旦得到CPU,就进入运行状态并自动调用自己的run()方法
运行--->冻结:处于运行状态的线程,执行sleep()方法,或等待I/O设备资源,让出CPU并暂时中止自己运行,进入阻塞状态
冻结--->就绪:睡眠时间已到,或等待的I/O设备空闲下来,线程便进入就绪状态,重新到就绪队列中等待CPU。当再次获得CPU时,便从原来中止位置开始继续运行。
运行--->死亡(1)(正常情况下)线程任务完成
                    (2)(非正常状况)线程被强制性的中止,如通过执行stop()或destroy()方法来终止一个线程

作者: 一个人旅行    时间: 2013-12-13 23:11
悟中生有 发表于 2013-12-13 23:10
刚才看到论坛高手以前的回答,感觉这个更清晰些,共同学习学习。
java中,每个线程都需经历新生、就绪、 ...

Nice I Like it




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2