面试题_线程的生命周期是?线程有几种状态?

线程的生命周期是?线程有几种状态?

1.线程的五种状态是:创建状态、就绪状态、运行状态、阻塞状态和死亡状态

  • 新建状态(new):就是使用new方法创建新线程对象,线程进入新建状态,例如:Thread thread=new Thread();

  • 就绪状态(Runnable):就绪状态也称为可执行状态,线程对象在被创建后可通过调用start(),从而启动该线程进入就绪状态,该状态的线程,随时可被CPU调度执行。

  • 运行状态(Running):线程获得CPU的资源调度可以执行,线程只能通过就绪状态进入到运行状态,run()定义线程的运行操作。

  • 阻塞状态(Blocked):在运行状态下,因为某些原因线程放弃CPU的执行权,暂时或者停止执行,进入阻塞状态.比如调用sleep()、wait()、suspend()、join()等方法后线程就进入了阻塞状态,该状态下的线程可以通过线程休眠时间结束sleept()或者调用notify()、notifyAll()、interrupt()后线程再次回到就绪状态

  • 销毁状态(Dead):线程因为执行完任务或者调用stop()、又或者异常终止而退出run(),该线程结束了生命周期

阻塞又分为三种:

  • 等待阻塞:运行的线程执行wait(),该线程会释放占用的所有资源,JVM会把该线程放入到”线程池“中,进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或者notifyAll()才能被唤醒,wait()是Object类的方法
  • 同步阻塞:运行的线程在获取对象的同时锁时,若该同步锁被别的线程占用,则JVM会把线程仿若锁池中。
  • 其他阻塞:运行的线程执行sleep()或者join(),或者发出了I\O请求时,JVM会把该线程设置为阻塞状态,当sleep状态超时时,或者I/O处理完毕时,线程重新转入就绪状态,sleep()时Thread类的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坐着地板打地鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值