Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态(图源《Java 并发编程艺术》4.1.4 节)。

线程在生命周期中并不是固定处于某一个状态而是随着代码的执行在不同状态之间切换。Java 线程状态变迁如下图所示(图源《Java 并发编程艺术》4.1.4 节):

由上图可以看出:

线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行) 状态。可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行) 状态。

操作系统隐藏 Java 虚拟机(JVM)中的 READY 和 RUNNING 状态,它只能看到 RUNNABLE 状态(图源:HowToDoInJava:Java Thread Life Cycle and Thread States),所以 Java 系统一般将这两个状态统称为 RUNNABLE(运行中) 状态 。

当线程执行 wait()方法之后,线程进入 **WAITING(等待)**状态。进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而 TIME_WAITING(超时等待) 状态相当于在等待状态的基础上增加了超时限制,比如通过 sleep(long millis)方法或 wait(long millis)方法可以将 Java 线程置于 TIMED WAITING 状态。当超时时间到达后 Java 线程将会返回到 RUNNABLE 状态。当线程调用同步方法时,在没有获取到锁的情况下,线程将会进入到 BLOCKED(阻塞) 状态。线程在执行 Runnable 的run()方法之后将会进入到 TERMINATED(终止) 状态。

线程有哪些基本状态?相关推荐

  1. java 线程的几种状态(转载)

    java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常 ...

  2. java 线程状态_Java线程为何没有Running状态?我猜你不知道。

    作者:国栋原文:https://my.oschina.net/goldenshaw/blog/705397 Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事.具体而言, ...

  3. 线程的几种状态_拜托:不要再问我线程有多少种状态了

    废话不多说,有六种状态 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中, 有几种状态呢?在Thread类中包含了个State枚举类,State枚举类 ...

  4. Java线程的生命周期及线程的几种状态

    线程也具有生命周期,主要包括 7 种状态: 出生状态. 就绪状态. 运行状态. 等待状态. 休眠状态. 阻塞状态. 死亡状态, 下面对线程生命周期中的 7 种状态做说明. 出生状态:用户在创建线程时所 ...

  5. java不同进程的相互唤醒_Java线程生命周期与状态切换

    前提 最近有点懒散,没什么比较有深度的产出.刚好想重新研读一下JUC线程池的源码实现,在此之前先深入了解一下Java中的线程实现,包括线程的生命周期.状态切换以及线程的上下文切换等等.编写本文的时候, ...

  6. Java线程的6种状态

    线程的概念,以及线程的创建方式,见我之前写的博文 本篇文章主要讲Java线程的6种状态 6种状态:初始状态(new) .可运行状态(Runnable).运行状态(Running).阻塞状态(Block ...

  7. c++thread里暂停线程_Java线程的 6 种状态

    作者:( •̀ ω •́ )y 出处:https://www.cnblogs.com/laishenghao/p/13972421.html 一.线程状态的枚举 Java的线程从创建到销毁总共有6种状 ...

  8. python线程状态_python 线程的五个状态

    当程序中包含多个线程时,CPU 不是一直被特定的线程霸占,而是轮流执行各个线程. 那么,CPU 在轮换执行线程的过程中,即从创建到消亡的整个过程,可能会历经 5 种状态,分别是新建.就绪.运行.阻塞和 ...

  9. java thread 几个状态_Java-Thread 线程的几种状态

    Oracle JDK 定义中,线程一共有六种状态 NEW:未启动状态 Thread t= newThread() { @Overridepublic voidrun() { System.out.pr ...

  10. 正在中止线程 iis_Zephyr线程生命周期及状态

    Zephyr中线程是使用CPU的最小单位,线程从创建后由zephyr内核进行调度,根据运行和等待资源的状况在几个状态中切换,直到线程终止退出生命周期. 线程状态 线程在其生命周期中有下面6种状态: N ...

最新文章

  1. Jmeter接口测试进阶
  2. socket编程资料-网络收集
  3. [html] 通过设置表单的target=“_blank“来下载文件会被浏览器拦截吗?如何解决?
  4. 备忘录怎么用红笔标注_备忘录丢失怎么找回来?教你轻松玩转备忘录
  5. echarts 雷达图_【带着canvas去流浪】绘制雷达图
  6. 标准库中迭代器的关系
  7. 线索二叉树(Binary Thread Tree)
  8. 神舟笔记本电脑更改启动盘顺序
  9. 中国移动中兴ZTE F623光猫设置自动拨号启用wifi功
  10. caffe安装出现 “error : too few arguments in function call” 的错误
  11. 百度ueditor使图片在编辑器中自适应大小
  12. oracle am时间,oracle里to_date()如何转换am、pm时间
  13. 这里给详细解答一下自己办理商标注册的申请流程
  14. 实验五 java gui(预习报告)
  15. 不带ui的服务器系统,win不含ui的云服务器
  16. [附源码]SSM计算机毕业设计领导干部听课评课管理系统JAVA
  17. Ubuntu12.04 设置1080P分辨率
  18. 第五次网页前端培训(JavaScript)
  19. uboot什么意思(uboot fastboot)
  20. 金雅拓推出两项全新的身份证件安全增强功能

热门文章

  1. DNN(全连接神经网络)
  2. 螺纹铣刀与丝锥攻丝有什么区别,谁的优势大呢
  3. ERP 软件项目验收流程
  4. Window7创建wifi
  5. Vue 实例之全局API,实例属性,全局配置,组件进阶
  6. cocos2dx-2.2.6版本下载地址
  7. (4.2.44.3)横幅广告图片轮播控件
  8. 请求头中x-requested-with 的作用
  9. filter: grayscale(1); | 网页变灰
  10. 【GLSL教程】(五)卡通着色