线程的生命周期

29 阅读1分钟

新建状态 new

new Thread()的时候,只是创建的一个thread实例, 它具备了可执行的能力, 但是此时并不是一个线程

就绪状态 runnable

此时线程具备了可执行的能力, 调用start方法之后会进入该状态, 已经获取到了除cpu之外的资源, 内存空间等,但还未获取到cpu时间片,并未执行

运行状态 running

此时线程可能会获取到了cpu的时间片, 进入运行状态, 但是也可能未获取到时间片,未被cpu选中,重新回到runnable状态等待

阻塞状态 blocked

当运行了 Thread.sleep() , 锁, 或者是等待方法后会进入阻塞状态, 当进入此状态时,不能直接恢复到running状态,会先进入runnable状态重新等待cpu调度

终结状态 terminated

  1. 线程正常运行结束
  2. 线程在blocking的被中断
  3. runnable由于平台原因等造成线程terminated