线程的生命周期
标签:线程创建 技术 导致 alt 内存 释放 tar end 程序
线程的生命周期
1.新建
- 线程刚被创建时就处于新建状态,JVM为其分配内存,初始化成员变量
2.就绪
- 当线程调用了start()方法时,就处于就绪状态
- JVM为线程创建了方法栈和程序计数器,等待线程调度器调度
3.运行
- 就绪状态的线程获取CPU资源,开始运行run()方法, 该线程进入运行状态
4.阻塞
- 线程调用了sleep()方法,主动放弃处理器资源
- 线程调用了一个阻塞式的IO方法,在该方法返回之前一直处于阻塞状态(例如上述的FutureTask.get())
- 线程试图过去一个同步锁(同步监视器),该锁被其他线程占用时,该线程处于阻塞状态
- 线程在等待某个通知(notify) -- 线程通讯
- 程序调用了线程的suspend()方法将程序挂起,但是这个方法容易导致死锁,所以应该尽量避免
5.死亡
- call()方法或者run()方法正常结束
- 线程抛出一个未捕获的Exception或者Error
- 调用该线程的stop()方法来结束线程,但是容易出现线程死亡而锁还没有释放的情况,其他等待该锁的线程就会一直处于阻塞状态,形成死锁,所以不推荐使用
线程的生命周期
标签:线程创建 技术 导致 alt 内存 释放 tar end 程序
原文地址:https://www.cnblogs.com/JIATCODE/p/13276316.html
文章来自:
搜素材网的
编程语言模块,转载请注明文章出处。
文章标题:
线程的生命周期
文章链接:http://soscw.com/index.php/essay/78185.html
评论