线程状态

2021-03-16  本文已影响0人  caster

java线程与操作系统线程状态略有不同。

1. 操作系统底层线程状态:

课本经典五状态:


计算机操作系统线程状态

2. JAVA线程状态:

JAVA线程状态:指的是java线程类中的状态枚举,如下:

package java.lang;
public class Thread implements Runnable {
    public enum State {
        NEW,
        RUNNABLE,//
        BLOCKED,
        WAITING,
        TIMED_WAITING,
        TERMINATED;
    }
}
Thread.State 说明
        NEW         线程尚未start()
RUNNABLE 处于JVM级别运行状态;系统级别可能在等待处理器调度或已正在运行
BLOCKED 正在竞争monitor lock(阻塞于锁),用来进入或是重新进入(调用过wait()方法)synchronized方法、块
WAITING 线程调用了Object.wait()、Thread.join()或者LockSupport.park方法进入了waiting状态。等待状态的线程正在等待另一个线程执行特定的动作显示唤醒它:wait等notify,join等指定线程终止。被唤醒就进入BLOCKED状态
TIMED_WAITING 相比WAITING多了超时自动唤醒,调用以下方法之一实现:Thread.sleep Object.wait(long) Thread.join(long) LockSupport.parkNanos LockSupport.parkUntil
TERMINATED 终止线程的线程状态。 线程已完成执行

RUNNABLE细分状态:
1. Ready

2. Running

3. 一小部分Blocked

java的RUNNABLE对应操作系统的就绪和运行状态。
java的BLOCKED,WAITING,TIMED_WAITING对应操作系统的阻塞/挂起状态。

上一篇下一篇

猜你喜欢

热点阅读