一个线程可以有四种状态:

1、新(new), 即线程刚刚创建,而并未执行

2、可运行(runnable),意味着一旦时间分片机制有空闲的CPU周期提供给一个线程,那个线程便可立即开始运行。因此,线程可能在、也可能不在运行当中,但一旦条件许可,没有什么能阻止它的运行——它既没有“死”掉,也未被“堵塞”。

3、Dead,从自己的run()方法中返回后,一个线程便已“死”掉。亦可调用 stop()令其死掉,但会产生一个违例——属于Error的一个子类(也就是说,我们通常不捕获它)。记住一个违例的“掷”出应当是一个特殊事件,而不是正常程序运行的一部分。所以不建议你使用stop()(在Java 1.2 则是坚决反对)。另外还有一个destroy()方法(它永远不会实现),应该尽可能地避免调用它,因为它非常武断,根本不会解除对象的锁定。

4、阻塞(Blocked),线程可以运行,但有某种东西阻碍了它。若线程处于堵塞状态,调度机制可以简单地跳过它,不给它分配任何CPU时间。除非线程再次进入“可运行”状态,否则不会采取任何操作。为什么会阻塞呢,原因有:
  (1)调用sleep(毫秒数),使线程进入“睡眠”状态。在规定的时间内,这个线程是不会运行的。

  (2)用suspend()暂停了线程的执行。除非线程收到 resume()消息,否则不会返回“可运行”状态。

  (3)用wait()暂停了线程的执行。除非线程收到 nofify()或者notifyAll()消息,否则不会变成“可运行”

  (4)线程正在等候一些 IO(输入输出)操作完成。

  (5)线程试图调用另一个对象的“同步”方法,但那个对象处于锁定状态,暂时无法使用。

转载于:https://www.cnblogs.com/orlion/p/4901311.html

java线程四种状态相关推荐

  1. 简述java 线程四个状态_面四个选项中,哪些是线程进入阻塞状态的原因?_学小易找答案...

    [简答题]通过继承 Thread 类的方式创建两个线程,在 Thread 构造方法中指定线程的名字,并将这两个线程的名字打印出来. [论述题]请运用所学原理解释,为什么在孩子成长的过程中,家长要不断地 ...

  2. java线程6种状态转换,java6种线程状态

    网上好多帖子把操作系统的线程状态跟java的线程状态混为一谈,导致误导了好多人: 现在根据java的Thread类来分析java的线程状态; java.lang.Thread内部枚举State pub ...

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

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

  4. 【Java 并发编程】线程锁机制 ( 锁的四种状态 | 无锁状态 | 偏向锁 | 轻量级锁 | 重量级锁 | 锁竞争 | 锁升级 )

    文章目录 一.悲观锁示例 ( ReentrantLock ) 二.重量级锁弊端 三.锁的四种状态 ( 无锁状态 | 偏向锁 | 轻量级锁 | 重量级锁 ) 四.锁的四种状态之间的转换 ( 无锁状态 - ...

  5. 对象头、锁的四种状态、Java和处理器实现原子操作的方式(CAS、锁机制;总线锁定、缓存锁定)

    1.对象头 Java对象头里的Mark Word里默认存储对象的HashCode.分代年龄和锁标记位. 32位JVM的Mark Word的默认存储结构如下图所示: 在运行期间,Mark Word里存储 ...

  6. Java并发—锁的四种状态

    目录 无锁 偏向锁 轻量级锁 重量级锁 总结 锁的四种状态:无锁.偏向锁.轻量级锁和重量级锁 无锁 无锁就是没有真正意义上的上锁,所有的线程还是能访问并修改同一个资源,但是通过算法控制,实现同时只有一 ...

  7. javas的四种状态 无锁状态 偏向锁状态 轻量级锁状态 重量级锁状态

    一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? --->synchronized是在jvm层面实现同步的一种机制.  jvm规范中可以看到synchronized在jvm里 ...

  8. java中的强软弱虚_详解Java的四种引用——强软弱虚,颠覆你的认知!

    强软弱虚 java中的数据被类型分为了两类,它们分别是基本类型和引用类型.一般我们new出来的对象都属于引用类型的范畴.我们知道java是有垃圾回收机制的一种语言,根据垃圾回收时的策略,java将对于 ...

  9. 你知道Java的四种引用类型吗?

    点击蓝字 关注我们 点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 01 概述 在Java中提供了四个级别的引用:强引用,软引用,弱引用和虚引用. ...

最新文章

  1. 【AT2434】JOI 公園 (JOI Park) 最短路+贪心
  2. 成功解决WARNING: Ignoring invalid distribution -illow (E:\program files\python\python36\lib\site-package
  3. Quartus II18.0安装教程
  4. 业界 | 裁判太嚣张?平昌之后,奥运会评分系统将引入AI技术
  5. unittest框架学习笔记
  6. 修改Linux网卡由eth1变成eth0
  7. 华为服务器驱动_不可错过的华为核心概念股
  8. linux创建虚拟账号,linux vsftpd 创建虚拟用户 过程记录
  9. freeradius 测试mysql_在linux下安装配置mysql+freeradius
  10. js检查关闭浏览器方法
  11. NOIP2016DAY1题解
  12. 博客积分为0,这是又出错了?
  13. 安装双系统(ubantu和window10)失败后,如何找回数据及格式化被加密的U盘
  14. 【转】一文带你了解800万像素车载摄像头
  15. 下面哪个不是python合法的变量名_下面哪个不是Python合法的标识符
  16. NLP 之 jieba (结巴)制作词云
  17. toLower toUpper
  18. Android O 版本(Android 8.0) 存储空间不足时提醒
  19. 优先调度规则(PDR)
  20. 如何看电脑内存型号?

热门文章

  1. 大型网站架构的发展演变过程
  2. 开源大数据周刊-2018年08月10日 第96期
  3. React + Canvas 像素风格取色器
  4. 【自用】 Android Studio Gradle sync failed
  5. AngularJS的稍复杂form验证
  6. nginx+tomcat集群负载均衡中的多虚拟主机配置
  7. [转]微信的一道前端面试题
  8. [javaSE] java获取文件列表
  9. php admin允许空密码登陆
  10. 转:MySQL性能优化的最佳20+条经验