java线程的六种状态及转换:
线程状态 | 解释 | 调用方法 |
---|---|---|
new | 初始状态,创建线程 | new Thread() , 调用 Thread 类的构造方法。 而这个构造方法,最终都会调用 Thread 类的 init() 方法 |
runnable | 就绪状态(ready)(调用start,等待调度)+正在运行(running) | start() 方法, 从运行到就绪调用了yield() |
blocked | 阻塞状态,等待监视器锁时,陷入阻塞状态 | |
waiting | 等待状态的线程正在等待另一线程执行特定的操作(如notify) | wait() , join() ,park() , 调用notify() ,notifyAll() , unpark(Thread) 恢复到runnable状态 |
time_waiting | 超时等待,具有指定等待时间的等待状态 | sleep(), wait() , join() |
terminated | 终止状态, 线程完成执行 |
具体如下图 :