线程的状态学习
来源:互联网 发布:js判断上传文件格式 编辑:程序博客网 时间:2024/06/17 14:02
线程的生命周期: 线程要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。
新建状态:当程序使用New关键字创建了一个线程之后,线程就处于新建状态,此时的线程不会执行线程的线程执行体。
就绪状态:当线程对象调用了start()方法之后,该线程处于就绪护状态。此状态表示线程可以运行了(但并没有运行),该线程何时开始运行,取决于JVM里线程调度器的调度。
运行状态:如果处于就绪状态的线程获得了CPU,开始执行线程执行体,那么该线程处于运行状态。
阻塞状态:当因为主动放弃CPU资源或被动等待某些情况发生时,如果线程不能继续运行,则该线程处于阻塞状态。当发生以下情况时,线程将会进入阻塞状态:
- 线程调用sleep()方法主动放弃所占用的处理器资源
- 程序调用了线程的suspend()方法将该线程暂停。(容易发生死锁,已被弃用)
- 线程调用了一个阻塞式IO方法,在该方法返回之前,该线程被阻塞。
- 线程试图获得一个正被其他线程所持有的同步监视器时
- 线程在等待某个通知
线程死亡:当线程以如下方式结束,线程结束后就处于死亡状态。
- run()或call()方法执行完成后,线程正常结束。
- 线程抛出一个未捕获的Exception或Error
- 直接调用该线程的stop()方法来结束该线程。
使用isAlive()方法来判断线程是否处于死亡状态,如果线程就绪、运行、阻塞时,则返回true;当线程处于新建、死亡状态时,返回false。
以下是线程的状态转换图(来自《Java疯狂讲义》)
阅读全文
0 0
- 线程的状态学习
- [线程学习]线程的四种状态
- 线程学习之--4线程的状态
- iOS学习总结之多线程编程(NSThread)-线程的状态
- 学习笔记——JAVA线程<2>线程的状态
- 线程的状态
- 线程的状态
- 线程的状态
- 线程状态的转换
- 线程状态的转换
- 线程的状态转换
- 线程的状态转换
- 线程状态的转换
- 浅谈线程的状态
- 线程的状态转换
- 线程的分离状态
- 获得线程的状态
- 线程的各个状态
- Android Service
- 电机控制 编程笔记 event1.c
- Leetcode50. Pow(x, n)
- CSS 技巧
- #if, #elif, #else, #endif 使用
- 线程的状态学习
- 关于自动化的一些问题
- Cramfs、JFFS2、YAFFS2
- axios的拦截请求与响应
- 数据结构练手
- 再谈应用环境下的TIME_WAIT和CLOSE_WAIT
- Tensorflow: 可视化
- fastlane snapshot 遇到的错误
- 练习51