外观
一句话答案
进程是资源分配单位(独立地址空间),线程是 CPU 调度单位(共享进程资源),线程切换开销更小。
核心要点
| 维度 | 进程 | 线程 |
|---|---|---|
| 资源 | 独立地址空间 | 共享堆/方法区 |
| 切换 | 大(TLB失效) | 小(不切地址空间) |
| 通信 | IPC(管道/共享内存) | 直接共享内存 |
| 崩溃影响 | 不影响其他进程 | 可能导致整个进程崩溃 |
追问与易错
追问方向:
- 线程和协程区别?
- 一个 Java 线程占多少内存?
- 进程崩溃一定不影响其他进程吗?
易错点:
- ❌ 线程就是轻量级进程——实现不同
- ❌ 多线程就比多进程好——多进程隔离性更强
💡 记忆锚点
进程像独立的公司(有自己的办公楼/地址空间),线程像公司里的员工(共享办公区/堆和方法区,各有自己的工位/栈)。公司倒闭不影响别的公司(进程隔离),但一个员工搞砸可能整个公司完蛋(线程崩溃影响整个进程)。换公司成本大(TLB失效),换员工成本小。