线程的生命周期包含几个阶段?

2020-05-23 22:18:24 java常见问答 8557

我们为什么要掌握线程的生命周期?有人说“了解了它们的生命周期后,使用 Spring Bean 好比看到它们的行动轨迹,使用起来就一点都不慌了”,确实是这样。刚接触线程生命周期的小伙伴,可能不太记得在,理解不了他们的状态,比较混乱,更不清楚它们之间是如何进行状态转换的。下面是小编整理的线程的生命周期包含的几个阶段,和小编一起来看看吧。

线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。

新建:就是刚使用new方法,new出来的线程;注意:不能对已经启动的线程再次调用start()方法,否则会出现Java.lang.Illegal ThreadStateException异常。

就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;

运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;

阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处于阻塞状态的线程唤醒,比如调用notify或者notifyAll()方法。唤醒的线程不会立刻执行run方法,它们要再次等待CPU分配资源进入运行状态;

销毁:如果线程正常执行完毕后或线程被提前强制性的终止或出现异常导致结束,那么线程就要被销毁,释放资源;

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。

以上就是今天所讲的内容,更多想要了解java常见问答知识,请继续关注本网站。

推荐文章:

java什么是线程安全?线程安全是什么意思? 

java线程池参数设置原则,如何设置线程池参数比较合理?

java线程池的作用是什么?线程池介绍