Java 多线程实战:状态、操作与同步机制
在 Java 中,线程是程序执行流的最小单元。理解线程的生命周期、调度方式以及同步控制,是编写高效并发程序的基础。
1. 线程的生命周期及状态转换
线程对象创建后便进入生命周期,直到 run() 方法执行完毕或抛出未捕获异常时结束。整个过程中,线程主要处于以下六种状态之一:
- 新建 (New):创建了 Thread 对象但尚未调用 start(),仅分配内存。
- 可运行 (Runnable):调用了 start(),进入就绪队列等待 CPU 调度。
- 运行 (Running):获得 CPU 使用权,正在执行 run() 方法。
- 阻塞 (Blocked):等待获取监视器锁(synchronized)。
- 无限等待 (Waiting):调用 wait()、notify() 等,需其他线程唤醒。
- 计时等待 (Timed_Waiting):调用 sleep()、join() 等指定时间的等待。
- 终止 (Terminated):线程结束。

可以通过以下代码查看当前 JDK 支持的状态枚举:
public class ThreadState {
public static void main(String[] args) {
for (Thread.State state : Thread.State.values()) {
System.out.println(state);
}
}
}
2. 线程操作的相关方法
2.1 线程优先级
虽然 Java 提供了优先级设置(1~10),但这只是给操作系统的一个建议。不同 OS 对优先级的支持不同,因此不能依赖优先级来保证执行顺序,它更多用于提高程序效率的辅助手段。
// 设置默认、最高、最低优先级常量
Thread.MIN_PRIORITY; // 1
Thread.NORM_PRIORITY; // 5
Thread.MAX_PRIORITY; // 10
thread.setPriority(Thread.MAX_PRIORITY);
2.2 线程休眠 (sleep)
Thread.sleep() 是静态方法,让当前运行的线程暂停执行,释放 CPU 资源,进入阻塞状态。注意:休眠结束后线程回到就绪状态,而非直接运行。
try {
Thread.sleep(1000);
} (InterruptedException e) {
e.printStackTrace();
}


