前言:通过学习javaEE初阶中的多线程章节后加上我自己的理解,想来总结一下线程和进程的联系和区别.
一来是能更好地复习知识,二来是为了记录我的学习路程,相信未来的我回首不会忘记这段难忘的经历.
1.进程
先来谈谈进程:进程是操作系统中资源分配的基本单位.
1)进程的执行方式有两种:并行和并发,二者同时存在
2)进程的状态最关键的两个:就绪状态和阻塞状态.
就绪状态:进程随时可调度到CPU上执行
阻塞状态:进程暂时无法调度到CPU上执行
2.线程:
再谈线程:线程是操作系统调度执行的基本单位.
3.进程和线程的联系:
3.1线程也叫"轻量级进程"
- 进程是线程的容器:一个进程至少含 1 个主线程,可创建多个子线程。
- 共享资源:同一进程内的线程共享内存、文件句柄等资源,通信成本低。
- 协同工作:进程通过多线程实现内部并行(如浏览器用不同线程渲染和加载网络)。
4.进程和线程的区别:
维度 | 进程 | 线程 |
---|---|---|
定义 | 操作系统分配资源的基本单位 | 进程内的执行单元,CPU 调度基本单位 |
资源分配 | 独立地址空间、文件句柄等 | 共享进程资源,仅独立栈和寄存器 |
切换开销 | 高(涉及内存管理等大量资源) | 低(仅少量寄存器和栈数据) |
独立性 | 进程间隔离,崩溃不影响其他进程 | 共享资源,线程崩溃可能导致进程崩溃 |
适用场景 | 强隔离任务(如独立程序运行) | 同程序内协作任务(如多任务处理) |