01
一张图说明线程生命周期
JVM源码中将线程的生命周期分为新建(New)、可运行(Runnable)、阻塞(Blocked)、等待(Waiting)、超时等待(Timed_Waiting)和终止(Terminated)这6种状态。
在系统运行过程中不断有新的线程被创建,老的线程在执行完毕后被清理,线程在排队获取共享资源或者锁时将被阻塞,因此运行中的线程会在可运行、阻塞、等待状态之间来回切换。
线程的具体状态转化流程如图所示。
02
线程生命周期状态转化流程
(1)调用new方法新建一个线程,这时线程处于新建状态。
(2)调用start方法启动一个线程,这时线程处于可运行状态。可运行状态中又分:就绪(Ready)和运行中(Running)两种状态。处于就绪状态的线程等待线程获取CPU资源,在等待其获取CPU资源后线程会执行run方法进入运行中状态;正在运行的线程在调用了yield方法或失去处理器资源时,会再次进入就绪状态。
(3)正在运行中的线程在