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. 初识FPGA CLB之LUT实现逻辑函数
  2. 浅谈Linux服务器究竟设置多大交换分区合适
  3. 洛谷——P1640 [SCOI2010]连续攻击游戏
  4. oracle函数 case,oracle的case函数和case控制结构 (摘)
  5. jenkins自动化构建iOS应用配置过程中遇到的问题
  6. CSS常用的选择器和优先级的权重问题
  7. android menuitem 字体颜色,安卓更改Menu的字体颜色(使用actionLayout,适用于多个fragment)...
  8. Oracle role and user privileges
  9. Android Service(一)概述、作用、生命周期
  10. 2018年美赛E题M奖论文心得分享
  11. java中中文乱码_java中中文乱码怎么解决?
  12. Java字节码技术javassist
  13. 英雄联盟英雄技能总结
  14. 国医眼科大师-唐由之-干眼症熏方
  15. 【Python学习】程序练习《购物车程序》
  16. mysql安装所需最低配置数据_MySQL的安装与基本配置
  17. 关于H5移动端用什么自动化测试
  18. vFW虚拟防火墙部署实战
  19. IE浏览器下载文本文件(txt,csv等)
  20. 根据ip地址获取城市名的几种方法

热门文章

  1. 《C语言精讲第八课》——数组,超级详细且容易理解
  2. html5 网页兼容性测试工具,网页兼容性测试工具(MultiBrowser)
  3. 一公司员工反向“招聘老板”,网友:这是直聘BOSS
  4. 深度|华为的产品质量与可靠性是如何炼成的?
  5. mkv格式怎么无损转换成mp4?教你快速转换的方法
  6. 挑战100+Python项目4:练习英语口语
  7. 中值联:首个区块链诚信认证平台成立
  8. prtg linux 性能,PRTG 网络监控入门指南
  9. 如何提高幽门螺杆菌根除率?这几个点很关键
  10. 游戏谈话界面编写心得