002 线程的状态

一.概述

  线程的生命周期之中,会由不同的状态进行转换,理解这些状态的概念可以帮助理解线程的运行过程.


 二 .线程状态

在Thread类之中,存在一个内部类Status(实际是一个枚举类),这个类描述了线程的状态.

public enum State {      
        NEW,
        RUNNABLE,
 
        BLOCKED,
      
        WAITING,
       
        TIMED_WAITING,

        TERMINATED;
    }

在这个类之中定义线程的六个状态.其中,runnable状态包括我们的说的运行状态和就绪状态,因为这两个状态的切换是由JVM决定的,我们可以理解为一个状态.

[1]NEW: 线程对象创建之后的状态,此时线程没有调用start()方法.

[2]Runnable:线程对象处于可运行状态,是否正在运行取决于时间片是否已经分配.

[3]Block:阻塞状态.一般情况下是由于线程抢夺锁资源不成功,进入了阻塞队列之中.

[4]wating : 等待状态,一般是线程自己放弃时间片进入等待状态,在没有其他线程的唤醒时,此线程一直处于等待队列之中.

[5]time-wait: 休眠状态,一般是线程自己主动休眠进入的状态,当时间过去之后,线程自动进入可运行状态.诸如sleep,wait这样的方法都可能进入到该状态之中.

[6]terminated: 终结状态,一般是由线程出现异常或者完全运行完成进入到的状态之中.

原文地址:https://www.cnblogs.com/trekxu/p/8995482.html