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

© a80C51 中级黑马   /  2015-9-22 21:57  /  318 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1,        五种状态
新建(NEW)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)。

2,        新建和就绪
A,        使用new关键字即创建一个线程,此时为新建状态,仅由Java虚拟机为其分配内存,并初始化成员变量。
B,        调用start()方法后,该线程处于就绪状态JVM会创建方法调用栈和程序技术器。

3,        运行和阻塞状态
A,        运行状态:就绪的线程,获取CPU,开始执行run()方法的线程执行体,此时,即为运行状态。
B,        阻塞状态:线程被迫中断运行,等待下一次运行的时机。
C,        进入阻塞的情形;
a)        线程调用sleep()方法主动放弃所占的处理器资源;
b)        线程调用一个阻塞是IO方法,在该方法返回前,该线程被阻塞。
c)        线程试图获得一个同步监视器,但该同步监视器正被其他线程持有。
d)        线程正在等待某个通知
e)        线程调用线程的suspend()方法将该线程挂起。
D,        解除阻塞的情况
a)        调用sleep()方法的线程经过了指定时间
b)        调用的阻塞是IO方法已经返回
c)        线程成功的获取同步监视器
d)        线程获取到其他线程的通知
e)        挂起状态的线程被调用resume()恢复方法。
4,        线程死亡
进入死亡状态的三种方式
1st        run()或call()方法执行完毕;
2nd        线程抛出一个未捕获的异常或者错误;
3rd        直接调用该线程的stop()方法来结束该线程。
您需要登录后才可以回帖 登录 | 加入黑马