Python线程生命周期包括哪些阶段?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1749个文字,预计阅读时间需要7分钟。
《Python创建线程》一节中,介绍了两种创建线程的方法。通过分析线程的执行过程,我们了解到,当程序中包含多个线程时,CPU不是直接被特定线程占据,而是轮流执行各个线程。
《Python创建线程》一节中,介绍了 2 种创建线程的方法,通过分析线程的执行过程我们得知,当程序中包含多个线程时,CPU 不同一直被特定的线程霸占,而是轮流执行各个线程。那么,CPU 在轮换执行线程过程中,线程都经历了什么呢?线程从创建到消亡的整个过程,可能会历经 5 种状态,分别是新建、就绪、运行、阻塞和死亡,如图 1 所示。
图 1 线程状态转换图
线程的新建和就绪状态
无论是通过 Thread 类直接实例化对象创建线程,还是通过继承自 Thread 类的子类实例化创建线程,新创建的线程在调用 start() 方法之前,不会得到执行,此阶段的线程就处于新建状态。当位于新建状态的线程调用 start() 方法后,该线程就转换到就绪状态。所谓就绪,就是告诉 CPU,该线程已经可以执行了,但是具体什么时候执行,取决于 CPU 什么时候调度它。换句话说,如果一个线程处于就绪状态,只能说明此线程已经做好了准备,随时等待 CPU 调度执行,并不是说执行了 start() 方法此线程就会立即被执行。从图 1 可以看出,只有当线程刚刚创建,且未调用 start() 方法时,该线程才处于新建状态,而一旦线程调用 start() 方法之后,线程将无法再回到新建状态。
本文共计1749个文字,预计阅读时间需要7分钟。
《Python创建线程》一节中,介绍了两种创建线程的方法。通过分析线程的执行过程,我们了解到,当程序中包含多个线程时,CPU不是直接被特定线程占据,而是轮流执行各个线程。
《Python创建线程》一节中,介绍了 2 种创建线程的方法,通过分析线程的执行过程我们得知,当程序中包含多个线程时,CPU 不同一直被特定的线程霸占,而是轮流执行各个线程。那么,CPU 在轮换执行线程过程中,线程都经历了什么呢?线程从创建到消亡的整个过程,可能会历经 5 种状态,分别是新建、就绪、运行、阻塞和死亡,如图 1 所示。
图 1 线程状态转换图
线程的新建和就绪状态
无论是通过 Thread 类直接实例化对象创建线程,还是通过继承自 Thread 类的子类实例化创建线程,新创建的线程在调用 start() 方法之前,不会得到执行,此阶段的线程就处于新建状态。当位于新建状态的线程调用 start() 方法后,该线程就转换到就绪状态。所谓就绪,就是告诉 CPU,该线程已经可以执行了,但是具体什么时候执行,取决于 CPU 什么时候调度它。换句话说,如果一个线程处于就绪状态,只能说明此线程已经做好了准备,随时等待 CPU 调度执行,并不是说执行了 start() 方法此线程就会立即被执行。从图 1 可以看出,只有当线程刚刚创建,且未调用 start() 方法时,该线程才处于新建状态,而一旦线程调用 start() 方法之后,线程将无法再回到新建状态。

