新建 (new ) :新创建一个线程
就绪(Runnable) :线程对象创建后,其他线程调用了该对象的start方法,该状态的线程位于可运行线程池中,变得可运行, 等待获取CPU的使用权
运行(running) :就绪状态的线程或者CPU 的使用权,执行程序代码
阻塞(blocked) :阻塞状态是线程因为某种原因放弃了CPU 的使用权,暂时停止运行, 知道线程进入就绪状态才有机会转到运行状态
死亡(dead):线程执行完了或者异常退出了run方法,该线程结束声明周期。
阻塞的状态又分为三种
1,等待阻塞:运行的线程执行了 wait方法,该线程会释放占用的所有资源,jvm会把该线程放入“等待池”中。进入这个状态后是不能自动唤醒的,必须依靠其他线程调用notify或者notifyAll方法才能被唤醒,wait 是object类的方法
2,同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则jvm会把该线程放入到“锁池”中
3,其他阻塞:运行的线程执行sleep或者join方法,或者发出来i/o请求时,jvm会把该线程设置为阻塞状态。当sleep状态超时、join等待方法终结或者超时、或者i/o处理完毕时,线程从新进入就绪状态,sleep方法是Thread类的方法
原文:https://www.cnblogs.com/yuyyg/p/14496648.html