线程状态转换图如下:

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()方法,该线程结束生命周期。

最新文章

  1. Spring整合Ehcache管理缓存(转)
  2. Linux更改服务器Hostname
  3. 边工作边刷题:70天一遍leetcode: day 71-2
  4. 股票中带有ST和*ST的股票是什么意思啊?一图了解新三板与主板、中小板、创业板制度差异!
  5. Asp.NET设置Session过期时间的四种方式
  6. spring jdbctemplate源码跟踪
  7. 一张图让你看懂锻压、CNC、压铸、冲压四类工艺!
  8. git 使用小结
  9. bzoj1670
  10. C学习笔记之预处理指令
  11. firefox下对ajax的onreadystatechange的支持情况分析及解决
  12. PHP5.4的变化关注---What has changed in PHP 5.4.x(转)
  13. Swift—使用try?和try!区别-备
  14. [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传
  15. Sql Server函数全解<四>日期和时间函数
  16. 教你正确打开async/await关键字的使用
  17. Linux 10字符串命令病毒的处理记录
  18. 收藏清单: python测试数据生成及代码扫描最全工具列表
  19. Codeforces Round #481 (Div. 3)题解
  20. centOS 6.5安装python和nginx

热门文章

  1. 149-PHP大小写转换函数
  2. 实验吧-杂项-你没有见过的加密!(php srand()和rand()函数)
  3. Vim中的基本操作
  4. SpringBoot实现OAuth2认证服务器
  5. C# ASP 面试题 2017
  6. JSTL 运算符汇总
  7. linux搭建mariadb,windows2008搭建iis+php+wordpress
  8. caffe中运行mnist
  9. python全局变量、回调函数
  10. QMainWindow的空间布局结构