概述

线程的状态枚举: java.lang.Thread.State

其中罗列了6种状态:

  • NEW: 创建状态
  • RUNNABLE: 可运行状态
  • BLOCKED: 阻塞状态
  • WAITING: 等待状态
  • TIMED_WAITING: 定时等待状态
  • TERMINATED: 终止状态

具体代码如下:

public enum State {
    /**
     * 创建状态, 创建了线程但为调用start()方法
     */
    NEW,

    /**
     * 可运行状态, 处于正在运行 或者 等待CPU时间片
     */
    RUNNABLE,

    /**
     * 阻塞状态, 处于等待获取一个monitor锁(等待同步块/同步方法的锁 或者 被调用Object.wait方法重新唤醒后等待锁)
     */
    BLOCKED,

    /**
     * 等待状态, 处于等待状态的线程正在等待另一个线程执行特定操作, 例如:
     * 1. 调用Object.wait()的线程正在等待其他线程调用Object.notify()或Object.notifyAll()
     * 2. 调用Thread.join()的线程正在等待指定的线程终止
     *
     * 调用以下方法之一会进入等待状态:
     * 1. 没有超时的Object.wait
     * 2. 没有超时的Thread.join
     * 3. LockSupport.park
     */
    WAITING,

    /**
     * 定时等待状态, 处于等待具有指定等待时间的线程状态
     * 
     * 调用以下方法之一会进入定时等待状态:
     * 1. Thread.sleep
     * 2. 指定超时时间的Object.wait
     * 3. 指定超时时间的Thread.join
     * 4. LockSupport.parkNanos
     * 5. LockSupport.parkUntil
     */
    TIMED_WAITING,

    /**
     * 终止状态, 处于线程已完成执行的状态
     */
    TERMINATED;
}

上述6种状态会互相转换,它们的转换关系如图所示:

AC6B729CC8C641B18C7B94318AD3B232-2021-08-20-19:59:05.png

0条评论
头像
ICP证 : 浙ICP备18021271号