Java 多线程核心原理全解析(线程、进程、上下文切换)

1. 进程与线程的本质区别 1️⃣ 进程(Process) 操作系统进行 资源分配 的最小单位 每个进程拥有: 独立的内存空间 文件句柄 堆、方法区等

1. 进程与线程的本质区别

1️⃣ 进程(Process)

  • 操作系统进行 资源分配 的最小单位

  • 每个进程拥有:

    • 独立的内存空间

    • 文件句柄

    • 堆、方法区等

2️⃣ 线程(Thread)

  • CPU 调度和执行 的最小单位

  • 同一进程内的线程:

    • 共享堆、方法区

    • 各自拥有独立的栈、程序计数器

📌 结论:

多线程的“快”并不是因为更强,而是因为 减少了进程切换的成本

2. 为什么多线程能提升性能?

2.1 CPU 时间片轮转

  • 单核 CPU:并发(宏观并行)

  • 多核 CPU:并行(微观并行)

2.2 上下文切换成本

一次线程切换需要:

  • 保存寄存器状态

  • 切换线程栈

  • 刷新 CPU Cache

❗线程并非越多越好
👉 线程数 ≠ 性能

3. Java 线程的生命周期(面试必考)

NEW
 ↓ start()
RUNNABLE
 ↓(等待锁 / IO)
BLOCKED / WAITING / TIMED_WAITING
 ↓
TERMINATED

常见状态说明:

状态

说明

NEW

创建未启动

RUNNABLE

可运行(可能正在跑)

BLOCKED

等待锁

WAITING

无限期等待

TIMED_WAITING

超时等待

TERMINATED

执行结束

4. Java 线程模型的本质

Java 线程 ≈ 操作系统原生线程(1:1 模型)

  • JVM 不自己调度

  • 完全交给 OS

  • 好处:稳定、性能好

  • 坏处:线程多了成本高

5. 本篇总结

  • 线程是 CPU 调度单位

  • 多线程并不一定更快

  • 理解线程生命周期是并发的根基

从 Thread 到 Runnable 的正确打开方式 2026-02-05
Java 线程创建方式深度剖析(Runnable、Callable、Future) 2026-02-05

评论区