多线程生命周期(新建、就绪、运行、阻塞和死亡)

状态 概述
新建状态(New Thread) 线程处于创建状态,并没有调用start()方法之前
就绪状态(Runnable) 用start()方法之后进入到就绪状态,系统为该线程分配了除CPU外的所需资源,使该线程处于就绪状态。此外,如果某个线程执行了yield()方法,那么该线程会被暂时剥夺CPU资源,重新进入就绪状态
运行状态(Running) Java运行系统通过调度选中一个处于就绪状态的线程,使其占有CPU并转为运行状态。此时,系统真正执行线程的run()方法,就进入到运行状态
阻塞状态(Blocked) 一个正在运行的线程因某些原因不能继续运行时,就进入阻塞状态。这些原因包括:
1.当执行了某个线程对象的sleep()等阻塞类型的方法时,该线程对象会被置入一个阻塞集内,等待超时而自动苏醒
2.当多个线程试图进入某个同步区域时,没能进入该同步区域的线程会被置入锁定集,直到获得该同步区域的锁,进入就绪状态。
3.当线程执行了某个对象的wait()方法时,线程会被置入该对象的等待集中,知道执行了该对象的notify()方法wait()/notify()方法的执行要求线程首先获得该对象的锁。
死亡状态(Dead) 线程在run()方法执行结束后进入死亡状态
如果线程执行了interrupt()或stop()方法,那么它也会以异常退出的方式进入死亡状态。interrupt()方法不能中断正在运行过程中的线程,只能中断阻塞过程中的线程。

相关文章:

  • 2021-11-19
  • 2021-05-17
  • 2021-09-30
  • 2022-12-23
  • 2021-12-10
  • 2021-06-05
  • 2021-07-09
  • 2022-01-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-20
  • 2021-09-27
相关资源
相似解决方案