美文网首页
2.线程的生命周期

2.线程的生命周期

作者: f0eb4652b966 | 来源:发表于2018-09-20 16:09 被阅读10次

    1. NEW: 线程的新建状态,是指通过New关键字创建了Thread类(或其子类)的对象。

    2. RUNNABLE: 这种情况指的是Thread类的对象调用了start()方法,这时的线程就等待时间片轮转到自己这,以便获得CPU;第二种情况是线程在处于RUNNABLE状态时并没有运行完自己的run方法,时间片用完之后回到RUNNABLE状态;还有种情况就是处于BLOCKED状态的线程结束了当前的BLOCKED状态之后重新回到RUNNABLE状态。

    3. RUNNING: 这时的线程指的是获得CPU的RUNNABLE线程,RUNNING状态是所有线程都希望获得的状态。

    4. DEAD: 处于RUNNING状态的线程,在执行完run方法之后,或者异常退出时,就变成了DEAD状态了。

    5. BLOCKED: 这种状态指的是处于RUNNING状态的线程,出于某种原因,比如调用了sleep方法、等待用户输入等而让出当前的CPU给其他的线程。

    注意: BLOCKED状态,包括三种类型状态:等待(wait)、睡眠(sleep)、阻塞(申请资源:I\O、对象的锁);

    public static enum Thread.Stateextends Enum<Thread.State>线程状态。线程可以处于下列状态之一:

    1.NEW

    至今尚未启动的线程的状态。

    2.RUNNABLE

    可运行线程的线程状态。处于可运行状态的某一线程正在 Java 虚拟机中运行,但它可能正在等待操作系统中的其他资源,比如处理器。

    3.BLOCKED

    受阻塞并且正在等待监视器锁的某一线程的线程状态。处于受阻塞状态的某一线程正在等待监视器锁,以便进入一个同步的块/方法,或者在调用 Object.wait 之后再次进入同步的块/方法。

    4.WAITING

    某一等待线程的线程状态。某一线程因为调用下列方法之一而处于等待状态:

    不带超时值的 Object.wait

    不带超时值的 Thread.join

    LockSupport.park

    处于等待状态的线程正等待另一个线程,以执行特定操作。 例如,已经在某一对象上调用了 Object.wait() 的线程正等待另一个线程,以便在该对象上调用 Object.notify() 或 Object.notifyAll()。已经调用了 Thread.join() 的线程正在等待指定线程终止。

    5.TIMED_WAITING具有指定等待时间的某一等待线程的线程状态。某一线程因为调用以下带有指定正等待时间的方法之一而处于定时等待状态:

    Thread.sleep

    带有超时值的 Object.wait

    带有超时值的 Thread.join

    LockSupport.parkNanos

    LockSupport.parkUntil

    6.TERMINATED

    已终止线程的线程状态。线程已经结束执行。

    注意:在给定时间点上,一个线程只能处于一种状态。这些状态是虚拟机状态,它们并没有反映所有操作系统线程状态。

    相关文章

      网友评论

          本文标题:2.线程的生命周期

          本文链接:https://www.haomeiwen.com/subject/tejnnftx.html