线程五个状态

  1. 新建状态(NEW),当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值。
  2. 就绪状态(RUNNABLE),当对象待用了start()方法之后,该线程就处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行。
  3. 运行状态(RUNNING),如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态。
  4. 阻塞状态(BLOCKED),阻塞状态是指线程因为某种原因放弃了CPU使用权,也即让出了CPU timeslice,暂时停止运行。知道线程进入可运行(runnable)状态,才有机会再次获得CPU timeslice转到运行状态。
    阻塞状态主要分三种:
    • 等待阻塞(o.wait-->等待队列):运行的线程执行o.wait()方法,JVM会把该线程放入等待队列中
    • 同步阻塞(lock-->锁池):运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。
    • 其他阻塞(sleep/join):运行的线程执行Thread.sleep()或join()方法,或者发出了IO请求时,JVM会把该线程置为阻塞状态,当以上完毕,线程重新转入可运行状态
  5. 线程死亡
    当线程执行完毕、或者异常、会是调用stop()线程都会进入消亡状态。(注:不推荐使用stop结束线程,容易造成死锁)


标题:线程生命周期
作者:JonLv
地址:http://39.108.183.139:8080/articles/2023/03/11/1678547831194.html