JAVA多线程之状态转换图
2024-10-08 18:28:34
线程状态转换图如下:
1、新建(new):线程对象被创建后就进入了新建状态。如:Thread thread = new Thread();
2、就绪状态(Runnable):也被称为“可执行状态”。线程对象被创建后,其他线程调用了该对象的start()方法,从而启动该线程。如:thread.start(); 处于就绪状态的线程随时可能被CPU调度执行。
3、运行状态(Running):线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。
4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权限,暂时停止运行。直到线程进入就绪状态,才有机会进入运行状态。阻塞的三种情况:
1)等待阻塞:通过调用线程的wait()方法,让线程等待某工作的完成。
2)同步阻塞:线程在获取synchronized同步锁失败(因为锁被其他线程占用),它会进入同步阻塞状态。
3)其他阻塞:通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或超时、或者I/O处理完毕时,线程重新转入就绪状态。
5、死亡状态(Dead):线程执行完了或因异常退出了run()方法,该线程结束生命周期。
最新文章
- Spring整合Ehcache管理缓存(转)
- Linux更改服务器Hostname
- 边工作边刷题:70天一遍leetcode: day 71-2
- 股票中带有ST和*ST的股票是什么意思啊?一图了解新三板与主板、中小板、创业板制度差异!
- Asp.NET设置Session过期时间的四种方式
- spring jdbctemplate源码跟踪
- 一张图让你看懂锻压、CNC、压铸、冲压四类工艺!
- git 使用小结
- bzoj1670
- C学习笔记之预处理指令
- firefox下对ajax的onreadystatechange的支持情况分析及解决
- PHP5.4的变化关注---What has changed in PHP 5.4.x(转)
- Swift—使用try?和try!区别-备
- [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传
- Sql Server函数全解<;四>;日期和时间函数
- 教你正确打开async/await关键字的使用
- Linux 10字符串命令病毒的处理记录
- 收藏清单: python测试数据生成及代码扫描最全工具列表
- Codeforces Round #481 (Div. 3)题解
- centOS 6.5安装python和nginx