作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。
概念 | 进程 | 线程 |
---|---|---|
定义 | 进程是操作系统进行资源分配和调度的基本单位,是应用程序在执行过程中的一个实例。 | 线程是进程中的一个实体,被系统独立调度和分派的基本单位,是一条执行流程。 |
资源独立性 | 拥有独立的地址空间,一个进程崩溃后,在保护模式下不会影响到其他进程 | 线程共享所属进程的地址空间和资源,一个线程崩溃可能影响到同一进程的其他线程 |
开销 | 创建和销毁进程的开销比较大,切换进程也比较耗时 | 线程的创建、销毁和切换的开销小得多 |
通信 | 进程间通信(IPC)需要操作系统提供的特殊机制,如管道、信号、共享内存等 | 线程间可以直接读写进程数据段(如全局变量)来进行通信,更高效 |
依赖性 | 进程间相互独立 | 线程是进程的一部分,线程间存在依赖关系 |
进程在其生命周期内,会经历不同的状态。以下是进程可能的基本状态及其转换:
新建态 ---> 就绪态 ---> 运行态 ---> 终止态
\ ^ |
\ | v
\------ 阻塞态 <----