在 Java 中,Thread 类定义了六个状态来表示线程的生命周期。这些状态通过 Thread 类中的常量来表示,分别是:
1. NEW(新建状态):当一个 Thread 对象被创建时,它处于新建状态。这时候线程还没有开始执行,直到调用了 start() 方法。
2. RUNNABLE(可运行状态):当一个线程正在 Java 虚拟机中执行时,它处于可运行状态。这包括了操作系统线程正在执行线程的代码,或者线程处于就绪状态等待执行。在 RUNNABLE 状态中,可能还存在一些阻塞情况,如等待 IO 操作完成、等待获取锁资源等。
3. BLOCKED(阻塞状态):一个处于 BLOCKED 状态的线程正在等待获取一个被其他线程持有的监视器锁(synchronized 关键字修饰的对象)。当线程在等待锁资源时,便会进入阻塞状态。
4. WAITING(等待状态):当线程调用了 Object 类的 wait()、join() 或 LockSupport 的 park() 方法,或者 LockSupport 的 parkNanos()、parkUntil() 方法时,线程会进入等待状态。处于等待状态的线程需要其他线程的唤醒或特定的时间条件满足才能继续执行。
5. TIMED_WAITING(计时等待状态):在线程调用了具有超时参数的 Thread 类的 sleep()、join()、wait() 方法或 LockSupport 的 parkNanos()、parkUntil() 方法时,线程会进入计时等待状态。计时等待状态将在指定的时间后自动返回 RUNNABLE 状态。
6. TERMINATED(终止状态):当线程的 run() 方法执行完毕或者调用了 Thread 类的 stop() 方法导致线程停止时,线程处于终止状态。
这些线程状态代表了不同的线程生命周期阶段,理解线程状态可以帮助我们更好地管理和调试多线程程序。
标签:状态,RUNNABLE,六态,Thread,LockSupport,线程,等待 From: https://www.cnblogs.com/Rover20230226/p/17533828.html