线程状态

线程状态

丁起男 95 2022-04-13

线程状态

在java.lang.Thread类的内部,有一个名为State的内部公共枚举类,表示了线程的6种状态

    public enum State {
        NEW,
        RUNNABLE,
        BLOCKED,
        WAITING,
        TIMED_WAITING,
        TERMINATED;
    }
  • NEW:新建状态,尚未启动的线程的状态
  • RUNNABLE:可以运行状态。处于此状态的线程正在jvm中执行,但它可能正在等待来自操作系统的其他资源
  • BLOCKED:阻塞状态。处于此状态的线程正在等待监视器锁以便进入同步代码块或同步方法,或者在调用Object.wait()方法后准备重入同步代码块或同步方法
  • WAITING:等待状态。处于此状态的线程正在等待另一个线程执行特定的动作,例如需要另一个线程调用Object.notfy()或Object.notifyAll()进行唤醒,当调用如下方法时会进入WAITING状态:
    • Object.wait()
    • Thread.join()
    • LockSupport.park()
  • TIMED_WAITING:具有指定等待时间的线程状态。当调用以下方法时,进入此状态:
    • Thread.sleep(millis)
    • Object.wait(timeout)
    • Thread.join(millis)
    • LockSupport.parkNanos(blocker,nanos)
    • LockSupport.parkUnitil(blocker,deadline)
  • TERMINATED:终止状态。当线程执行完成后,处此状态