线程的状态及其转换

线程状态:(六种)

public enum State {
        NEW,
        RUNNABLE,
        BLOCKED,
        WAITING,
        TIMED_WAITING,
        TERMINATED;
    }

NEW:新建状态

用new创建的线程处于新建状态,此时他和其他的Java对象一样,仅仅在堆中分配了内存

Runable:就绪状态

当线程对象被创建后,调用了start方法,线程就处于就绪状态,处于就绪状态的线程(其他的条件都满足,可以等待获取CPU的使用权),等待获取CPU的使用权

Running:运行状态

处于运行状态的线程也就占用的CPU,执行线程代码。只能就绪状态的线程进入到运行状态

Blocked:阻塞状态

 阻塞状态是指线程因为某些原因放弃CPU(缺少资源:IO、锁),暂时停止运行,当前的线程处于阻塞状态

Waiting:等待状态

 当线程处于该状态,如果某个线程中的对象的wait()时,JVM就会将线程放入到等待池池

Timed_waiting:超时等待

sleep(long time),jion(long time) 会使线程处于睡眠状态

Terminated:终止状态

当线程执行到run()方法结尾时,就进入到终止状态,该表示线程的生命周期结束

线程状态转换:

线程的状态及其转换

 一个线程的生命周期中需要的状态:New、Runable、Running、Terminated四个状态。

线程在需要响应的资源时,进入到阻塞状态:阻塞状态包含Waiting,Blocked、Time_waiting状态。