Thread 类中的线程状态:

 public enum State {NEW,//新建RUNNABLE,// 执行态BLOCKED, //等待锁(在获取锁的池子里)WAITING,//等待状态TIMED_WAITING,//定时等待TERMINATED; //终止
}

创建状态(NEW):当一个线程创建以后,就处于创建状态。Thread   th= new Thread(()->{ });

等待锁(BLOCKED):当线程调用 th.start() 方法,表明该线程具备获取锁的资格,进入等待锁的池子中。

可运行状态:当线程 th 获取到锁之后就进入该状态(该状态并不存在Thread 类中,但是操作系统是否执行线程,是根据是否分配时间片来决定的)。

执行态(RUNNABLE):当可运行态的线程 th 获取到cpu的时间片以后就进入执行。

终止态(TERMINATED):线程执行完毕,或者出现异常。

阻塞状态:在 Thread 源码里没有改状态但是在《操作系统原理》中线程是存在该状态的。阻塞态的线程是没有释放自己本身持有的锁(例如线程运行时需要外部I/O资源,打印机、调用sleep()方法。)只是由于外部提出了干预,等外部事件执行完毕后,可直接进入可运行状态。

等待状态(WAITING): 一个处于运行状态的线程还可能调用wait()方法、该方法会使调用的线程释放对象锁释,所以线程将进入等待获取锁的队列里面。join() 方法同理,join()方法底层使用的wait(),只不过Join()方法作用于当前执行的线程中。通过调用notify()或notifyAll()这两个方法来唤醒线程然后进入锁池状态。进入锁池状态以后继续参与锁的竞争。

定时等待状态(TIMED_WAITING):调用 带参数的wait(long num) 方法。该方法等定时一到自动会唤醒线程然后进入锁池状态。进入锁池状态以后继续参与锁的竞争。

挂起状态:当一个处于运行状态的线程调用了suspend()方法以后,它就会进入挂起状态(这一方法已经过时不建议使用)。挂起状态的线程也没有释放对象锁,它需要调用resume()方法以后才能恢复到可运行状态。将线程挂起容易导致程序死锁。

转载于:https://www.cnblogs.com/jalja/p/11451981.html

java 线程之线程状态相关推荐

  1. 面试:为什么 Java 线程没有Running状态?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | my.oschina.net/goldenshaw/bl ...

  2. 为什么 Java 线程没有 Running 状态?一下被问懵!

    什么是 RUNNABLE? 与传统的ready状态的区别 与传统的running状态的区别 当I/O阻塞时 如何看待RUNNABLE状态? Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状 ...

  3. JAVA线程六种状态_Java:线程的六种状态及转化

    多线程概述及创建方式 Java:线程的六种状态及转化 关于线程的生命周期,网上书上说法不一,难以统一,本篇做一个总结: java.lang.Thread.State枚举类中定义了六种线程的状态,可以调 ...

  4. java线程四种状态

    一个线程可以有四种状态: 1.新(new), 即线程刚刚创建,而并未执行 2.可运行(runnable),意味着一旦时间分片机制有空闲的CPU周期提供给一个线程,那个线程便可立即开始运行.因此,线程可 ...

  5. java的知识点29——join:合并线程 插队线程、线程的状态

    join:合并线程 插队线程  实例: 爸爸和孩子买烟的故事 /*** join:合并线程 插队线程* 爸爸和孩子买烟的故事* @author Administrator**/ public clas ...

  6. 为什么 Java 线程没有 Running 状态?

    Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事.具体而言,这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态: 什么 ...

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

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

  8. java线程runnable_Java 线程状态之 RUNNABLE

    在上一篇我们粗略谈到了 Java 的6种线程状态,并对其中较为简单的 NEW 和 TERMINATED 做了分析,现在我们具体来看下 State.RUNNABLE状态,即所谓的可运行状态.(以下简称 ...

  9. 面试官问:为什么 Java 线程没有 Running 状态?我懵了

    转载自 面试官问:为什么 Java 线程没有 Running 状态?我懵了 什么是 RUNNABLE? 与传统的ready状态的区别 与传统的running状态的区别 当I/O阻塞时 如何看待RUNN ...

  10. java线程——中断线程+线程状态+线程属性(优先级)

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java线程--中断线程+线程状态+线程属性(优先级) 的相关知识: [1]中断线程 1.1 ...

最新文章

  1. Hinton等大牛要来中国授课,首个AI人才国际培养计划在北大启动
  2. 从CPU缓存看缓存的套路
  3. Maven最全教程,看了必懂
  4. 判断分辨网站是否伪静态的方法
  5. 驱动层和r3程序通讯的列子参考爱写驱动的女装大佬
  6. H5前端框架推荐合集 (转)
  7. java 实现 tcp_java实现TCP通信
  8. 大屏可视化分配率是什么意思_什么是分配率?
  9. Algorithm学习笔记 --- 迷宫问题
  10. django 各种包的集合网站
  11. UE4 性能优化方法(工具篇)
  12. PL/SQL Developer 8.0.2.1505 简体中文汉化版下载,带注册机-永久注册。
  13. Maven 设置本地仓库的地址
  14. Atitit Queue consum algo 队列消费算法fifo lifo ro目录1. 队列消费算法 11.1. FIFO 先入先出 11.2. LIFO 后入先出 不能多开 1
  15. java 动态生成表格_js中动态生成表格
  16. mysql字符集异常_mysql字符集设置出错问题
  17. 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息。
  18. 小白学统计|面板数据分析与Stata应用笔记(一)
  19. linux cp omitting,Linux复制文件时出现omitting directory错误解决方法(图)
  20. Unity5.x从入门到精通资源(电子版+书内项目)

热门文章

  1. OC(Open collector) 集电极开路
  2. opencv_python关于Qt的错误
  3. 随机森林算法的随机性_理解随机森林算法的图形指南
  4. ann人工神经网络_深度学习-人工神经网络(ANN)
  5. 使用OpenCV和Python从图像中提取形状
  6. 多尺度视网膜图像增强_视网膜图像怪异的预测
  7. 数据科学与大数据排名思考题_排名前5位的数据科学课程
  8. 工程应用中的自相关操作
  9. java面试换背景颜色_实习|渣二本Java菜鸡0 Offer的春招血泪史,一定要主动去找实习呀!
  10. python3不等于号_python中的不等于号是什么