线程的六种状态
在 Java 中,每个线程都有它的“人生轨迹”,它会经历6 种状态,而这些状态会影响线程的运行、调度和资源占用情况。
Thread.State 规定 Java线程的六种状态:
1 | public enum State { |
New
1 | Thread t = new Thread(() -> {}); |
线程被创建但还未启动,只有调用start()才会进入下一个状态
RUNNABLE(可运行)
1 | Thread t = new Thread(() -> { |
线程可以运行,正在被调度或等待 CPU 时间片,不代表一定正在执行,只是“有资格执行”。
BLOCKED(阻塞)
1 | public class BlockDemo { |
第二个线程在等待锁的释放(进入同步块的时候被其他线程占用)
WAITING(无限等待)
1 | Object lock = new Object(); |
只有另一个线程调用lock.notify()或notifyAll()才会被唤醒,用于线程之间的通信
TIMED_WAITING(超时等待)
1 | Thread.sleep(1000); // 休眠1秒 |
等待指定时间后自动唤醒
TERMINATED(终止)
1 | Thread t = new Thread(() -> System.out.println("结束")); |
正常执行完、抛出异常后使得线程已经结束,不再参与调度。
状态切换图示

All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.