Java 多线程(PART VI) 线程状态图解
来源:互联网 发布:北京编程培训学校 编辑:程序博客网 时间:2024/06/18 11:18
图解
这是网上出现频率最高的一张图:
我用AI重新画了一遍(adobe illustrator 软件不错,但是我不太会用)。
主要有那么5种状态:
新建状态:
此时线程对象已经被创建,但是还是没有调用start()方法,如果调用run()方法线程不会启动。
可执行状态:
注:这是唯一可以进入running状态的状态,也叫就绪状态。
此时已经调用方法start(),JVM会为起创建方法调用栈和程序计数器,此时它随时都可以被CPU调度。
运行状态:
此时线程获得CPU资源,正在运行。如果此时调用yield方法会主动放弃CPU退回到可执行状态。
阻塞状态:
如果CPU由于某种突发原因放弃了CPU的使用权。此时会进入阻塞状态。此时调度器忽略次线程,直到其返回就绪状态。才有可能再次被调用。
等待阻塞
调用线程的wait()方法,让线程等待某工作的完成。
同步阻塞
线程在获取synchronized同步锁失败,因为其他的线程已经获得了这个锁,它会进入同步阻塞状态。
其他阻塞
调用sleep()方法或join()或者等待I/O操作,线程会进入到阻塞状态。如果此时sleep时间到了,或者join等待的线程已经完成操作,或者I/O完成,就好再次进入到就绪状态。
死亡状态
此时线程任务已经完成,或者是不可再运行。处于死亡状态的线程是不可再调度的,不可再得到CPU时间。
阅读全文
0 0
- Java 多线程(PART VI) 线程状态图解
- java线程状态图解
- Java多线程:线程状态
- java多线程-线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- Java多线程:线程状态
- UVA 12118 检察员的烦恼 欧拉路径(实际上是考理解啦)
- 15算法课程 66. Plus One
- explicit
- C语言重定义不同的基类型
- rocketmq入门使用
- Java 多线程(PART VI) 线程状态图解
- 2017.10.5 最短母串 思考记录
- centos 安装boost(caffe需要)
- 递归回溯 求N个数的全排列 及 next_permutation的使用
- hdu 2094
- 接水问题
- [BZOJ]3994 [SDOI2015]约数个数和 莫比乌斯 + 分块
- codefoces 868C(二进制,状态压缩)
- 15算法课程 67. Add Binary