线程的声明周期和状态

新建 (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类的方法

 

posted @ 2021-03-07 21:41  余一洋  阅读(95)  评论(0编辑  收藏  举报