线程有哪些状态

线程有哪些状态?

  • 新建(NEW):新建线程对象,未调用 start 方法
  • 可运行(RUNNABLE):线程对象创建后,被调用 start 方法。此状态的线程位于可运行线程池中,等待获取 CPU 的使用权
  • 运行中(RUNNING):线程获取了 CPU 的使用权,执行程序代码
  • 阻塞(BLOCKED):线程因为某种原因放弃了 CPU 的使用权,暂时停止运行,直到线程进入可运行状态,才有机会再次获取 CPU 的使用权进入运行状态
  • 消亡(DEAD):线程已经执行完毕。主线程 main 方法结束或因异常退出;子线程 run 方法结束或因异常退出

详细可参考:

https://blog.csdn.net/tongxuexie/article/details/80145663

https://blog.csdn.net/xingjing1226/article/details/81977129

https://blog.csdn.net/pange1991/article/details/53860651 

 


【Java面试题与答案】整理推荐

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程有以下几种状态: 1. 新建状态(New):当线程对象被创建时,它处于新建状态。此时它还没有被执行,只是一个空的线程对象。 2. 就绪状态(Runnable):当线程处于就绪状态时,表示它已经准备好了运行,但是并没有获得 CPU 时间片。此时线程会进入就绪队列等待系统为它分配 CPU 时间。 3. 运行状态(Running):当线程获得了 CPU 时间片,它就会进入运行状态,开始执行线程体中的代码。 4. 阻塞状态(Blocked):当线程遇到某些情况时,比如等待某个输入输出操作完成、等待某个锁的释放等,它就会进入阻塞状态。在这种状态下,线程不会占用 CPU 时间,也不会进入就绪队列。 5. 死亡状态(Dead):当线程的 run() 方法执行完毕后,线程就会进入死亡状态线程状态之间的转换过程如下: 1. 新建状态(New)-> 就绪状态(Runnable):当线程对象被创建时,它处于新建状态,当调用 start() 方法后就会进入就绪状态。 2. 就绪状态(Runnable)-> 运行状态(Running):当线程被系统调度执行时,就会进入运行状态。 3. 运行状态(Running)-> 就绪状态(Runnable):当线程执行完一段代码后,它可能需要等待某些操作完成,比如等待某个锁的释放,此时它就会进入阻塞状态。当等待的操作完成后,它就会回到就绪状态。 4. 运行状态(Running)-> 阻塞状态(Blocked):当线程遇到某些情况需要等待时,比如等待某个输入输出操作完成、等待某个锁的释放等,它就会进入阻塞状态。 5. 阻塞状态(Blocked)-> 就绪状态(Runnable):当线程等待的操作完成后,它就会回到就绪状态,等待系统为它分配 CPU 时间。 6. 运行状态(Running)-> 死亡状态(Dead):当线程的 run() 方法执行完毕后,线程就会进入死亡状态

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值