线程生命周期中,线程状态切换关系如下图:多线程学习之线程生命周期

线程各个状态直接切换说明:

  • new Thread至Runnable状态
    调用thread的start方法进入Runnable状态,但是现在线程并没有运行,相当于一个thread对象放到了内存中,等待调度运行
  • RUNNABLE至RUNNING状态
    当前Runnable状态的Thread被调度器选择,进入Running状态
  • RUNNING至RUNNABLE状态
    当前Running状态的线程,yield(让出CPU)或者调度器轮询使该线程放弃执行,当前的线程会从RUNNING至RUNNABLE
  • RUNNING至BLOCKED状态
    线程遇见阻塞操作,如:IO操作、等待锁资源等,调用sleep或者wait方法,进入Blocked状态
  • BLOCKED至RUNNABLE状态
    wait的线程被notify或者notifyall,阻塞操作完成,阻塞被interrupt,sleep的时间到达,Blocked状态进入到Runnable状态
    进入TERMINATED状态
    线程运行完成,结束生命周期。线程运行异常。JVM Crash(意外死亡)导致所有线程都结束

PS:学习笔记整理,有错误欢迎指正。

相关文章: