08.Java线程

总结
  • Java 线程六种状态:NEW/RUNNABLE/BLOCKED/WAITING/TIMED_WAITING/TERMINATED
  • 阻塞 IO 在操作系统层面是阻塞,但 Java 层面仍是 RUNNABLE
  • 终止线程用 interrupt(),不用 stop();CPU 密集型线程数 ≈ 核数+1,IO 密集型按公式算

1. 线程生命周期

Java 六种状态

状态 触发条件
NEW new Thread() 后,未调用 start()
RUNNABLE 调用 start(),包含操作系统的运行+就绪
BLOCKED 等待 synchronized 隐式锁
WAITING Object.wait()Thread.join()LockSupport.park()
TIMED_WAITING 上述方法的带超时版本,以及 Thread.sleep(millis)
TERMINATED run 方法执行完或抛异常
java线程状态

注意:线程调用阻塞 IO(如读文件、网络),在操作系统层面是阻塞,但 Java 层面仍是 RUNNABLE

2. 创建线程的两种方式

// 方式一:继承 Thread
class MyThread extends Thread {
    public void run() { /* ... */ }
}

// 方式二:实现 Runnable(推荐,解耦任务与线程)
Thread t = new Thread(() -> { /* ... */ });
t.start();

实际开发中线程都交给 线程池 管理,很少手动 new Thread。

3. 终止线程

4. 线程数设置

线程本地存储见 11.ThreadLocal