黑马程序员技术交流社区

标题: 线程生命周期 [打印本页]

作者: 张翼    时间: 2011-11-11 09:00
标题: 线程生命周期
线程有哪些生命周期,在这个周期之中,线程阻塞有哪些情况,又是如何重回就绪状态?
作者: 刘一扬    时间: 2011-11-11 09:13
运行态、阻塞态、就绪态。
当线程在执行读取文件、写入文件,或着遇到CACHE缺页失效等操作时,就会进入阻塞态,举个例子当读取\写入文件时,程序调用操作系统相应API,但真正读取或写入文件时,并不是由CPU进行控制,而是将要读取或写入文件的地址、大小、缓冲等信息传递给DMA,此时DMA将要读取的文件从硬盘读入缓冲或者将缓冲中的数据写入到硬盘,CPU则暂时挂起此线程,启动另一线程,当DMA运行完相应操作后,会产生一个中断,CPU捕获中断后,将阻塞的线程重新标记为就绪状态,根据CUP调度算法,选择接下来要运行的进程。
作者: zhou_411424    时间: 2011-11-11 11:25
和人有生老病死一样,线程也有它完整的生命周期:
1.         新生(New):代表线程的对象已经被初始化,但尚未运行run方法。
2.         可执行(Runnable):线程正在运行run方法,但这只说明线程目前处于的状态,如果系统没有能力拨出CPU执行时间给线程,线程就“不执行”,这里的“不执行”不代表“停滞”或“死亡”。
3.         停滞(Blcked):线程是可以执行的,但由于某些因素的阻碍处于停滞状态,系统排程器略过了应给的CPU执行时间。
4.         死亡(Dead):线程的正式结束方式,run方法执行完毕并返回。





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