Java语言定义了6种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态,这6种状态分别如下。

  • 新建(New):创建后尚未启动的线程处于这种状态。
  • 运行(Runable):Runable包括了操作系统线程状态中的Running和Ready,也就是处于此状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间。
  • 无限期等待(Waiting):处于这种状态的线程不会被分配CPU执行时间,它们要等待被其他线程显式地唤醒。以下方法会让线程陷入无限期的等待状态:
    • ● 没有设置Timeout参数的Object.wait()方法。
    • ● 没有设置Timeout参数的Thread.join()方法。
    • ● LockSupport.park()方法。
  • 限期等待(Timed Waiting):处于这种状态的线程也不会被分配CPU执行时间,不过无须等待被其他线程显式地唤醒,在一定时间之后它们会由系统自动唤醒。以下方法会让线程进入限期等待状态:
    • ● Thread.sleep()方法。
    • ● 设置了Timeout参数的Object.wait()方法。
    • ● 设置了Timeout参数的Thread.join()方法。
    • ● LockSupport.parkNanos()方法。
    • ● LockSupport.parkUntil()方法。
  • 阻塞(Blocked):线程被阻塞了,“阻塞状态”与“等待状态”的区别是:“阻塞状态”在等待着获取到一个排他锁,这个事件将在另外一个线程放弃这个锁的时候发生;而“等待状态”则是在等待一段时间,或者唤醒动作的发生。在程序等待进入同步区域的时候,线程将进入这种状态。
  • 结束(Terminated):已终止线程的线程状态,线程已经结束执行。

上述六种状态在遇到特定事件发生的时候将会相互转换,转换关系如下

Java的六种线程状态相关推荐

  1. Java的六种线程状态(不是五种)

    网上的文章鱼龙混杂,对于Java到底几种线程状态?这个问题,根据<Java并发编程>这本经典的教材里提到的,是六种状态,不是很多文章中提到的五种状态.这些文章中所提到的是操作系统的五种状态 ...

  2. 【java笔记】线程状态

    六种线程状态: NEW(新建): 线程刚被创建,但是并未启动,还没调用start方法 Runnable(可运行):线程可以在java虚拟机中运行 的状态,可能正在运行自己代码,也可能没有,这取决于操作 ...

  3. Java中的线程状态

    参考:https://my.oschina.net/goldenshaw?tab=newest&catalogId=3277710 1 线程状态 Java中的线程一共有6种状态. 在某个时刻, ...

  4. (Java多线程)线程状态

    文章目录 线程状态概述 Timed Wating(计时等待) Blocked(锁阻塞) Waiting无限等待 线程状态概述 在API中java.lang.Thread.State 这个枚举给了6种线 ...

  5. java 线程状态_浅析Java中的线程状态

    一.线程的5种状态 众所周知,Java的线程状态有5种,分别对应上图中五种不同颜色,下面对这5种状态及状态间的转化做相应的解释: 1. 初始化状态:新建一个线程对象 2. 可运行状态:其他线程调用了该 ...

  6. java中线程的生命周期_Java中的线程生命周期– Java中的线程状态

    java中线程的生命周期 Understanding Thread Life Cycle in Java and Thread States are very important when you a ...

  7. java 线程池 状态_【Java多线程】线程状态、线程池状态

    线程状态: 线程共包括以下5种状态. 1. 新建状态(New)线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 2. 就绪状态(Runnable)也 ...

  8. JAVA多线程及线程状态转换

    转发:https://www.cnblogs.com/nwnu-daizh/p/8036156.html 以下内容整理自:http://blog.csdn.net/wtyvhreal/article/ ...

  9. java基础提升(二):多线程、线程安全、线程状态、等待唤醒机制、线程池

    目录 一. 多线程 1.1并发与并行 1.2 线程与进程 1.3 创建线程类 1.3.1 方式一:继承Thread类 1.3.2 方式二:实现Runnable接口 1.3.3 Thread和Runna ...

最新文章

  1. 微信公众平台开发(十一) 功能整合
  2. 汉字转16进制java_java实现汉字转unicode与汉字转16进制实例
  3. python库datetime的使用
  4. webconfig的connectionStrings字段
  5. 如何在 Linux 最小化安装中设置互联网
  6. execl用宏查询mysql_关于EXCEL能否用宏直接连到oracle数据库然后取数据
  7. 【Leetcode | 】93. 复原IP地址
  8. 这个AI狠!能互译C++、Java和Python,以后只学一种编程就行吗
  9. java编程 队列_5.1、顺序队列(java实现)
  10. python 文件名随自变量变化_Python 求解自行车前后轮轨迹问题
  11. 正态分布下含绝对值的期望求解 -- 待验证
  12. c#利用反射Assembly 对类和成员属性进行操作
  13. UTC时间转北京时间原理与matlab代码
  14. 烽火通信力推SDN技术在网络中实现
  15. Java 发送邮件的几种方式
  16. 微信官方多端框架Donut可将小程序编译成 Android 以及 iOS 应用了
  17. Josh 的学习笔记之 Verilog(Part 4——RTL 概念与常用 RTL 建模)
  18. 高性能处理器架构与编程实验(基础实验2:openEuler系统环境实验)
  19. 亚马逊苹果手机数据爬取
  20. CS61A Lab 12

热门文章

  1. 华为卖车两天获3000辆订单,赶超蔚来或是第一个目标
  2. 用oFono来GPRS上网
  3. 路飞学城python电子书_路飞学城-Python开发集训-第一章
  4. 中信集团张波:信息化已经过去,数字化刚刚到来
  5. PhxPaxos源码分析:网络
  6. 论文|RecSys17-序列推荐模型 Translation-based Recommendation
  7. 【高德地图WEB开发】 入门篇(地图/搜索/经纬度/缩放层级)
  8. 【Gym 102222C --- Caesar Cipher】
  9. ROS工业机器人和工业自动化竞赛Agile Robotics for Industrial Automation Competition (ARIAC)
  10. mysql 存储过程写法