关于线程的六个状态可以看一下:Java线程的6个状态
建议先看一下上面的文章,再看下面的文章。
线程的五大生命周期
NEW: 线程新建状态
RUNNABLE: 就绪状态
RUNNING: 运行状态
BLOCKED: 堵塞状态
TERMINTED: 终止状态
看完Java线程的6个状态我们会发现五大状态比Thread.state多了一个RUNNING状态,但是少了TIME_WAITING和WAITING两个状态,线程的生命周期把线程的TIME_WAITING和WAITING这两个状态都归入到了BLOCKED状态,接下来说一下RUNNING和RUNNABLE吧,其他的就不重复说了。
RUNNING就绪状态
当调用线程对象的start()方法,线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说此线程立即就会执行;
Running运行状态
当就绪的线程被调度并获得CPU资源时,此时线程才得以真正执行,即进入到运行状态。就绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;
如下图
七种基本基础状态
其实就是在thread.state的6个状态中加上生命周期的running,就组成了7种基础状态,知识点都一样的哈。
new
runnable
running
time_waiting
waiting
blocked
terminated