笔友城堡 - 可定义的个人主页

前言

Java面试时对应进程线程的提问是最为常见的,下面记录一下进程和线程的区别,方便自己查阅和学习。

正文

进程(Process

简单的说:进程就是正在运行的程序,也就常见的APP应用。

准确的说:进程是操作系统进行资源分配和隔离的基本单位。

优点
  1. 隔离性强

  2. 稳定性高

  3. 安全性好

缺点
  1. 创建和切换开销大

  2. 资源占用多

  3. 进程间通信复杂

线程(Thread

简单的说:线程是进程中的一条执行路径。

准确的说:线程是 CPU 调度和执行的最小单位。

优点

线程的优点是

  1. 创建和切换开销小

  2. 通信效率高

  3. 能充分利用多核 CPU

从而显著提升系统的并发性能和响应速度,是现代高并发编程的基础。

缺点

主要缺点在于共享数据带来的

  1. 线程安全问题

  2. 死锁风险

  3. 上下文切换开销

  4. 调试难道搞

  5. 维护成本

因此在高并发场景下通常不直接使用裸线程,而是通过线程池或异步模型来管理。

进程和线程对比

通信方式对比
进程间通信 IPC线程间通信
管道共享内存
消息队列volatile / synchronized
共享内存Lock / Condition
Socketwait / notify
信号ThreadLocal

线程通信快,但更容易出现:

  • 竞态条件

  • 死锁

  • 可见性问题

崩溃影响对比
场景影响范围
进程 A 崩溃不影响进程 B
线程 1 崩溃整个进程可能退出

原因:

线程共享地址空间,一个线程非法访问内存,整个进程会被 OS kill。

总结

  1. 进程是资源分配的单位,线程是 CPU 调度和执行的单位;

  2. 进程之间相互独立,线程共享进程资源,线程更轻量但风险更高。

参考文章

AI

相关网址

笔友城堡 - 可定义的个人主页

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...