Java刷题知识点之线程的几种可用状态(新建、可运行、运行、阻塞、死亡)

简介:
https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=13

 

 

 

 

 

 

 

1、 新建( new ):新创建了一个 线程对象
2、 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程) 调用了该对象 的  start  ()方法。该状态的线程位于可运行线程池中, 等待被线程调度选中,获 取 cpu 的使用权 。
3、 运行( running ):可运行状态( runnable )的线程 获得了  cpu  时间片( timeslice ) ,执行程序代码。
4、 阻塞( block ):阻塞状态是指线程因为某种原因 放弃了  cpu  使用权,也即让出了 cpu timeslice , 暂时停止运行。直到线程进入可运行( runnable )状态,才有 机会再次获得 cpu timeslice 转到运行( running )状态。
  阻塞的情况分三种:
    (一)、 等待阻塞:运行( running )的线程执行 o .  wait  ()方法, JVM 会把该线程 放 入等待队列( waitting queue )中。
    (二)、 同步阻塞:运行( running )的线程在获取对象的同步锁时,若该 同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。
    (三)、 其他阻塞: 运行( running )的线程 执行  Thread  .  sleep  (  long  ms  )或  t  .  join  ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞
         状态。 当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。
5、 死亡( dead ):线程 run ()、 main () 方法 执行结束,或者因 异常退出了  run  ()方法,则该线程结束生命周期。死亡的线程不可再次复生。

 

 
 
 
 
 
 
  简单帮助记忆
 
可以用早起坐地铁来比喻这个过程:
  还没起床:sleeping
  起床收拾好了,随时可以坐地铁出发:Runnable
  等地铁来:Waiting
  地铁来了,但要排队上地铁:I/O阻塞
  上了地铁,发现暂时没座位:synchronized阻塞
  地铁上找到座位:Running
  到达目的地:Dead


本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/7417255.html,如需转载请自行联系原作者
相关文章
|
2月前
|
监控 Java
JavaGuide知识点整理——线程池的最佳实践
总之,合理使用和配置线程池是提高 Java 程序性能和稳定性的重要手段。遵循最佳实践,可以更好地发挥线程池的作用,提升系统的运行效率。同时,要不断地进行监控和优化,以适应不同的业务需求和环境变化。
109 63
|
5月前
|
安全 Java 编译器
揭秘JAVA深渊:那些让你头大的最晦涩知识点,从泛型迷思到并发陷阱,你敢挑战吗?
【8月更文挑战第22天】Java中的难点常隐藏在其高级特性中,如泛型与类型擦除、并发编程中的内存可见性及指令重排,以及反射与动态代理等。这些特性虽强大却也晦涩,要求开发者深入理解JVM运作机制及计算机底层细节。例如,泛型在编译时检查类型以增强安全性,但在运行时因类型擦除而丢失类型信息,可能导致类型安全问题。并发编程中,内存可见性和指令重排对同步机制提出更高要求,不当处理会导致数据不一致。反射与动态代理虽提供运行时行为定制能力,但也增加了复杂度和性能开销。掌握这些知识需深厚的技术底蕴和实践经验。
106 2
|
2月前
|
存储 设计模式 SQL
[Java]知识点
本文涵盖Java编程中的多个知识点,包括静态与动态代理、基本数据类型转换、设计模式、异常处理、类加载、序列化、ORM框架、IPv4地址分类、编译与解释等。文章详细介绍了每个知识点的原理和使用方法,并提供了相关示例和注意事项。
49 16
[Java]知识点
|
11天前
|
Java API 调度
【JavaEE】——多线程(join阻塞,计算,引用,状态)
【JavaEE】——多线程,join,sleep引起的线程阻塞,多线程提升计算效率,如何获取线程的引用和状态
|
2月前
|
网络协议 Java 物联网
Java网络编程知识点
Java网络编程知识点
57 13
|
4月前
|
存储 消息中间件 资源调度
「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
该文章总结了操作系统基础知识中的十个关键知识点,涵盖了进程与线程的概念及区别、进程间通信方式、线程同步机制、死锁现象及其预防方法、进程状态等内容,并通过具体实例帮助理解这些概念。
「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
|
3月前
|
Java Python
python知识点100篇系列(16)-python中如何获取线程的返回值
【10月更文挑战第3天】本文介绍了两种在Python中实现多线程并获取返回值的方法。第一种是通过自定义线程类继承`Thread`类,重写`run`和`join`方法来实现;第二种则是利用`concurrent.futures`库,通过`ThreadPoolExecutor`管理线程池,简化了线程管理和结果获取的过程,推荐使用。示例代码展示了这两种方法的具体实现方式。
python知识点100篇系列(16)-python中如何获取线程的返回值
|
3月前
|
安全 Java 编译器
Java基础-知识点(二)
Java基础-知识点(二)
22 0
|
3月前
|
存储 缓存 安全
Java基础-知识点(一)
Java基础-知识点(一)
29 0
【多线程面试题十二】、阻塞线程的方式有哪些?
线程阻塞的方式包括调用sleep()方法、阻塞式IO操作、等待同步监视器的获取、等待通知(notify),以及慎用的suspend()方法。