多线程之(线程的生命周期)

线程的生命周期

如果我们想学会、理解,或者用好线程就必须要知道(熟悉)线程的生命周期。线程的生命周期分为:新建阶段、就绪阶段、运行阶段、阻塞阶段、死亡阶段。大致讲一下每个阶段,线程处于什么状态。

  • 新建阶段:就是线程对象(Thread)被new出来的那个阶段,我们之前说过一切皆为对象,包括线程也是一个对象,也需要被new 出来。
  • 就绪阶段:当我们的线程被创建以后,不是直接就开始执行的,是要去等待CPU的执行权被释放,然后抢到CPU执行权才会被执行。这个阶段就属于就绪等待阶段,主要的工作就是抢CPU的执行权。当然,自由处于这个阶段的线程才有资格去抢占CPU的执行权。
  • 运行阶段:当我们的线程抢到CPU的执行权,就进入的运行阶段。当然,也不是每次都被执行完的,只会执行一个CPU的时间片。
  • 阻塞阶段:这个阶段,才是多线程最需要了解、掌握的阶段。在此阶段,我们多了各种手段,去操控我们的线程。这个阶段大致分为三种:等待阻塞、同步阻塞、其他阻塞。
    1.等待阻塞:运行状态中的线程,执行了wait()方法,使本线程进入到等待状态。
    1. 同步阻塞:运行中的线程获取同步锁失败,JVM会把该线程放入线程池中。
    2. 其他阻塞:运行的线程执行了sleep或者join方法,或者当前的线程有等待IO响应的时候,JVM会把该线程设置阻塞状态(BLOCK),当sleep时间到,join线程结束,IO请求结束,线程回到就绪状态。

画个图展示一下

image.png

励志把复杂的东西,讲得通俗易懂。

你可能感兴趣的:(多线程之(线程的生命周期))