1、线程的生命周期就是线程从一开始创建,到run方法执行完毕以后的状态变化。[状态之间的切换]
2、线程的生命周期几种状态【1、新建状态 2、就绪状态 3、运行状态 4.阻塞状态 5.死亡状态】
线程的生命周期描述
1.新建状态:通过new的方式创建出线程对象,此时线程就进入到创建状态【新建状态】。
新建状态的线程是不能运行。
新建状态的线程调用start方法,进入就绪状态
2.就绪状态:线程具备运行能力,只差操作系统【CPU】分配给他运行时间片【万事具备,只欠时间片】
得到操作系统【CPU】分配给他运行时间片,此时开始执行run方法,进入运行状态。
3.运行状态:线程运行run方法。
回到就绪状态:
1.操作系统【CPU】分配给他运行时间片使用完毕,回到就绪状态。
进入阻塞状态
1.运行状态的线程执行了sleep方法,进入阻塞状态。
2.运行状态的线程执行了wait方法,进入阻塞状态。
3.运行状态的线程执行输入/输出动作,进入阻塞状态。
......
进入死亡状态
1.运行状态的线程run方法执行完毕,进入死亡状态。
2.运行状态的线程调用stop()/destroy() ,进入死亡状态。
4.阻塞状态:线程暂停运行
回到运行状态
阻塞状态中的线程,结束了造成阻塞的原因,此时线程进入就绪状态,得到操作系统【CPU】分配给他运行时间片就可以进入运行状态。
运行状态进入阻塞状态原因:
1.运行状态的线程执行了sleep方法,进入阻塞状态,休眠时间结束/interrupt,进入就绪状态
2.运行状态的线程执行了wait方法,进入阻塞状态,调用notify/notifyAll,进入就绪状态
3.运行状态的线程执行输入/输出动作,进入阻塞状态,输入/输出结束,进入就绪状态
5.死亡状态:线程运行结束,释放运行资源。
死亡状态的线程是不能运行,除非再一次使用strat方法重新启动运行。