![](https://img.haomeiwen.com/i28188174/f1f80133ca8af80c.png)
- new(新建)
线程刚被创建,还未启动。 - runnable(就绪)
线程调用了start()方法,此时线程已启动但未被运行,等待获取cpu资源。 - running(运行)
线程获取到cpu资源,执行代码程序 - blocked(阻塞)
线程由于某种原因放弃cpu资源,暂停运行。直到线程重新进入就绪状态才重新竞争CPU资源,转到运行状态。
阻塞分为三种情况:
4.1 等待阻塞:线程执行wait()方法,释放占用的所有资源,JVM将线程放入“等待池”等待notify()或者notifyAll()唤醒,竞争资源。
4.2 同步阻塞:running状态的线程获取对象同步锁时候,该同步锁被被其他线程占用,JVM会把该线程放入“锁池”中,
4.3 其他阻塞:running状态的线程执行sleep()或者join()方法,或者发出I/O请求时,JVM把该线程置为阻塞状态,当sleep()超时,join()终止或者超时,I/O处理完毕,线程重新转为就绪状态。 - dead(死亡)
线程执行结束,或者因异常退出run()方法,该线程生命周期结束。
网友评论