当前位置: 首页 > 面试题库 >

请详细描述一下线程从创建到死亡的几种状态都有哪些?

步博厚
2023-03-14
本文向大家介绍请详细描述一下线程从创建到死亡的几种状态都有哪些?相关面试题,主要包含被问及请详细描述一下线程从创建到死亡的几种状态都有哪些?时的应答技巧和注意事项,需要的朋友参考一下

考察点:JAVA线程状态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 ()方法,则该线程结束生命周期。死亡的线程不可再次复生。

 

 类似资料:
  • 本文向大家介绍请回答一下Java中有几种线程池?并且详细描述一下线程池的实现过程相关面试题,主要包含被问及请回答一下Java中有几种线程池?并且详细描述一下线程池的实现过程时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程池 1、newFixedThreadPool创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入

  • 本文向大家介绍ajax的请求状态有哪几种?相关面试题,主要包含被问及ajax的请求状态有哪几种?时的应答技巧和注意事项,需要的朋友参考一下 readyState:0、1、2、3、4 0:UNINITIALIZED //未初始化 1:LOADING //加载 2:LOADED //加载完成 3:INTERACTIVE //交互 4:COMPLETED //完成

  • 本文向大家介绍请列举一下启动线程有哪几种方式,之后再说明一下线程池的种类都有哪些?相关面试题,主要包含被问及请列举一下启动线程有哪几种方式,之后再说明一下线程池的种类都有哪些?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程池 ①启动线程有如下三种方式: 一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。

  • 本文向大家介绍请描述下ajax的请求都有哪些步骤?相关面试题,主要包含被问及请描述下ajax的请求都有哪些步骤?时的应答技巧和注意事项,需要的朋友参考一下 1.创建XMLHttpRequest let xhr=new XMLHttpRequest; 2.连接服务器 xhr.open("get","goods.json",true) true代表异步,false代表同步。goods.json代表请求

  • 本文向大家介绍创建线程池有哪几种方式?相关面试题,主要包含被问及创建线程池有哪几种方式?时的应答技巧和注意事项,需要的朋友参考一下 线程池创建有七种方式,最核心的是最后一种: 1. newSingleThreadExecutor():它的特点在于工作线程数目被限制为 1,操作一个无界的工作队列,所以它保证了所有任务的都是被顺序执行,最多会有一个任务处于活动状态,并且不允许使用者改动线程池实例,因此

  • 本文向大家介绍请简单描述一下JVM分区都有哪些?相关面试题,主要包含被问及请简单描述一下JVM分区都有哪些?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JVM java内存通常被划分为5个区域:程序计数器(Program Count Register)、本地方法栈(Native Stack)、方法区(Methon Area)、栈(Stack)、堆(Heap)。