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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张翼 黑马帝   /  2011-11-11 09:00  /  1516 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

线程有哪些生命周期,在这个周期之中,线程阻塞有哪些情况,又是如何重回就绪状态?

2 个回复

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