网上好多帖子把操作系统的线程状态跟java的线程状态混为一谈,导致误导了好多人;

现在根据java的Thread类来分析java的线程状态;

java.lang.Thread内部枚举State

public enum State {

NEW,

RUNNABLE,

BLOCKED,

WAITING,

TIMED_WAITING,

TERMINATED;

}

通过源码可以看到,java线程状态共有6种,分别为NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED;

状态分析

NEW

新建初始状态,例如new Thread(),并且没有调用start()方法;

RUNNABLE

可运行状态,此时调用了start()方法,java线程中将操作系统中的就绪状态(ready)和运行中状态(running)统一归类为可运行状态(RUNNABLE)。

虽然该状态的线程在jvm中是运行状态,但可能处于等待操作系统cpu的调度。

BLOCKED

阻塞状态,等待监视器锁(monitor lock),表示线程阻塞于锁;

触发条件:

synchronized同步代码块

或synchronized同步方法

WAITING

等待状态,进入该状态的线程需要等待其它线程进行一些特殊操作,如notify、notifyAll、unpark;

触发条件:调用下列任何一个方法

Object#wait()

join()

LockSupport#park()

TIMED_WAITING

超时等待状态,该状态与WAITING不同之处是在指定时间后可以自动唤醒到就绪状态;

触发条件:调用下列任何一个方法

sleep Thread.sleep

Object#wait(long)

join(long)

LockSupport#parkNanos

LockSupport#parkUntil

TERMINATED

终止状态,表示该线程已执行完毕。

原文:https://www.cnblogs.com/xingxin666/p/11637341.html

java线程6种状态转换,java6种线程状态相关推荐

  1. java 交易金额转换分,java金额元与分转换工具种

    java金额元与分转换工具类 java金额元与分转换的一个工具类. 1.元转分: 可传入字符串或者long型(隐式转换为long型也可)整数. 若传入为字符串,则通过替换小数点的方式转换,小数点有多位 ...

  2. java 线程状态_JAVA线程漫谈:线程状态与状态转换解析

    线程使用方式 JDK线程的顶层抽象是Runnable接口,本质上,线程相关的类都是基于Runnable和Thread实现类实现. JDK API级别有不同的创建线程的方式,但本质是还是基于Runnab ...

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

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

  4. Java并发知识梳理(上):并发优缺点,线程状态转换,Java内存模型,Synchronized,Volatile,final,并发三特性,Lock与AQS,ReetrandLock

    努力的意义,就是,在以后的日子里,放眼望去全是自己喜欢的人和事! 整个系列文章为Java并发专题,一是自己的兴趣,二是,这部分在实际理解上很有难度,另外在面试过程中也是经常被问到.所以在学习过程中,记 ...

  5. 【图解】透彻Java线程状态转换

    大家好,我是阿星,好久不见,欢迎来到Java并发编程系列番外篇线程状态转换,内容通俗易懂,请放心食用. 线程状态 先来个开场四连问 Java线程状态有几个? Java线程状态是如何转换? Java线程 ...

  6. Java提高班(二)深入理解线程池ThreadPool

    本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高级内容,读者可根据 ...

  7. TCP状态转换图文解说

    文章目录 一.TCP状态转换图 说明 状态转换图 二.名次解释 2MSL 半关闭 补充:Linux命令:查看网络相关状态 补充:端口复用 FIN_WAIT2 TIME_WAIT 一.TCP状态转换图 ...

  8. python如何在所有线程结束后执行最后操作_Python线程的生命周期

    在线程的生命周期中,从创建到执行以及最终终止,线程通常处于四种状态之一:开始态.可调度状态.阻塞态和终止态. 父线程和子线程 当一个新的进程或程序开始运行时,它将以一个线程开始,这个线程被称为主线程. ...

  9. java线程6种状态转换,Java线程的生命周期和各种状态转换详解

    在Java中,任何对象都有生命周期,线程也不例外,它也有自己的生命周期.当Thread对象创建完成时,线程的生命周期便开始了,当线程任务中代码正常执行完毕或者线程抛出一个未捕获的异常(Exceptio ...

最新文章

  1. datagrid的正反双向排序
  2. 10Prototype(原型)模式
  3. Java使用UDP聊天程序
  4. unsigned short占几个字节_ARM中,字、半字、字节分别是多少位?
  5. 计算机维修与护理论文,计算机维修与维护方面论文选题 计算机维修与维护论文题目怎样定...
  6. Oracle跟踪文件trace文件
  7. 985 211 PHP,你们要的985、211高校官方报录比汇总来了
  8. 暗黑复制服务器物品,暗黑2战网环境下复制dupe物品装备
  9. RedHat 自定义Jenkins Slaver Service,并开机自启动
  10. 《秘密》读后感之秘密的揭露和法则
  11. JVAV SE冒泡排序
  12. idea maven子项目图标右下角没有小蓝方块
  13. 利用python如何抓取微博评论?
  14. T1: String根据特定字符截取字符串
  15. java wate_Java Items.water_bucket方法代码示例
  16. 满洲国时期的国都建设
  17. 2016年8月6日 星期六 --出埃及记 Exodus 16:6
  18. vue 拓扑组件_vue.js生成S型拓扑图
  19. 转盘程序 使用松下XH PLC编程 用了威纶通TK6071IQ屏,PLC用的是松下XH的
  20. gitbook 插入图片_docsify 入坑指南与我放弃 Gitbook 的那些理由

热门文章

  1. 目标检测方法系列——R-CNN, SPP, Fast R-CNN, Faster R-CNN, YOLO, SSD
  2. 关于__init、__initdata和__exit、__exitdata的学习笔记
  3. C++for循环中i++与++i的区别
  4. iOS H264,H265视频编码(Video encode)
  5. 通过添加HTTP Header实现上下文数据在WCF的自动传递
  6. 三个简单的问题,让你顺势而为
  7. linux日常管理3
  8. Linux与Windows数据传输
  9. 将窗体显示在 PageControl 上。
  10. python中的os操作文件,文件路径