转载自 一张图弄懂java线程的状态和生命周期

上图是一个线程的生命周期状态流转图,很清楚的描绘了一个线程从创建到终止的过程。

这些状态的枚举值都定义在java.lang.Thread.State下

NEW:毫无疑问表示的是刚创建的线程,还没有开始启动。

RUNNABLE:  表示线程已经触发start()方式调用,线程正式启动,线程处于运行中状态。

BLOCKED:表示线程阻塞,等待获取锁,如碰到synchronized、lock等关键字等占用临界区的情况,一旦获取到锁就进行RUNNABLE状态继续运行。

WAITING:表示线程处于无限制等待状态,等待一个特殊的事件来重新唤醒,如通过wait()方法进行等待的线程等待一个notify()或者notifyAll()方法,通过join()方法进行等待的线程等待目标线程运行结束而唤醒,一旦通过相关事件唤醒线程,线程就进入了RUNNABLE状态继续运行。

TIMED_WAITING:表示线程进入了一个有时限的等待,如sleep(3000),等待3秒后线程重新进行RUNNABLE状态继续运行。

TERMINATED:表示线程执行完毕后,进行终止状态。

需要注意的是,一旦线程通过start方法启动后就再也不能回到初始NEW状态,线程终止后也不能再回到RUNNABLE状态。

一张图弄懂java线程的状态和生命周期相关推荐

  1. [转]Java 对象锁-synchronized()与线程的状态与生命周期

    线程的状态与生命周期 Java 对象锁-synchronized() ? 1 2 3 4 synchronized(someObject){ //对象锁 } 对象锁的使用说明: 1.对象锁的返还. 当 ...

  2. 5张图搞懂Java深浅拷贝

    微信搜一搜 「bigsai」 关注这个专注于Java和数据结构与算法的铁铁 文章收录在github/bigsai-algorithm 欢迎star收藏 如果本篇对你有帮助,记得点赞收藏哦! 在开发.刷 ...

  3. 一张图看懂java 堆和栈

    JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method) 栈区: 每个线程包含一个栈区,栈中只保存方法中(不包括对象的成员变量)的基础数据类型和自定义对象的引用(不 ...

  4. 一文弄懂Java线程安全队列

    文章目录 一.分类 二.BlockingQueue 阻塞队列 三.ConcurrentLinkedQueue 非阻塞队列 一.分类 java中所有队列都继承至java.util.Queue接口,该接口 ...

  5. java守护锁_Java 对象锁-synchronized()与线程的状态与生命周期与守护进程

    synchronized(someObject){ //对象锁 } 一.对象锁 someObject 的使用说明: 1.对象锁的返还. 当synchronize()语句执行完成. 当synchroni ...

  6. java公平所与非公平所_一张图读懂Java非公平锁与公平锁

    前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820- 种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩qq了,但是怀旧一下,欢迎加入六脉神剑Ja ...

  7. 一张图弄懂opengl的诸多库gl glu glut freeglut glew glfw之间关系

    开始学习opengl,但是看opengl编程指南不同版本之间使用了一堆不同的库,概念名称全都搅起的,越看越糊涂,遂整理的一下opengl相关的一些库的名词, 才发现是不同时期不同版本不断发展的结果. ...

  8. 「C++: draft」一张图弄懂C++指针(*)和引用()以及深拷贝、浅拷贝

    什么是深拷贝和浅拷贝(看第一段就行):C++深拷贝与浅拷贝的区别 (简单易懂版)

  9. 一张图弄懂汇编程序常用指令系统(知识结构图)--快速参照手册(参照:人民邮电出版社《汇编语言程序设计(第二版)》前5章内容)

最新文章

  1. Go 学习笔记(62)— Go 中 switch 语句中的 switch 表达式和 case 表达式之间的关系
  2. 跟我学PPStream局域网共享
  3. 经典C语言程序100例之六四
  4. 4.3 欠拟合与过拟合
  5. 采用合适的网站优化技术
  6. CCIE理论-第四篇-SDA-1
  7. PHP FPM源代码反刍品味之三: 多进程模型
  8. jinja Evnironment
  9. oracle 多版本技术,读书笔记: 关于oracle中多版本的问题
  10. 60秒ICO募资2.35亿,AI+区块链概念,这个风口上的公司有点怪
  11. Ueberschall Elastik 3 for Mac - 弹性Loops音源采样器
  12. 对非线程安全类ListT的一些总结
  13. Math源码java_从零开始的Java学习记录(26)——Math类及其些许源码
  14. lc滤波器是利用电感的感抗_“电感”的作用与使用方法
  15. thinkPHP使用中遇到的问题交流==
  16. 15、工作流Web流程设计器及表单设计器
  17. excel连接mysql_使用Excel 通过 ODBC 连接到 MySQL 数据库
  18. 老路《用得上的商学课》学习笔记(1-5课)
  19. word文档 文献尾注修改样式
  20. 京东朱健:聊聊京东广告系统的数据库选型

热门文章

  1. [SpringBoot2]web场景_静态资源规则与定制化
  2. [JavaWeb-JavaScript]JavaScript运算符
  3. [C++11]指针空值类型nullptr
  4. [Java基础]Collection集合
  5. 浅谈java spring_浅谈Spring(一)
  6. python正态分布函数_python3-正态分布
  7. 与Min_25筛有关的一些模板
  8. cf1526 C Potions
  9. 2020牛客国庆集训派对day4 Arithmetic Progressions
  10. [APIO2016] 划艇(dp + 组合数 + 前缀和优化)