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
常见状态说明:
4. Java 线程模型的本质
Java 线程 ≈ 操作系统原生线程(1:1 模型)
JVM 不自己调度
完全交给 OS
好处:稳定、性能好
坏处:线程多了成本高
5. 本篇总结
线程是 CPU 调度单位
多线程并不一定更快
理解线程生命周期是并发的根基