我们先明确定义:
进程是一个具有独立运行环境的程序实例,操作系统可以通过进程调度来管理CPU的时间分配。
而线程则是进程中一个单独的执行路径,并且一个进程中可以包含多个线程,这些线程共享进程的地址空间和其他资源。
主要区别在于:
1.进程是资源分配的基本单位,线程是CPU调度的基本单位。
2.进程与进程之间是相互独立的,也就是说一个进程的崩溃并不会对其他的进程造成影响。但是,线程之间因为是共享进程的资源的,所以,如果一个线程崩溃了,可能会导致整个进程的崩溃。
3.进程之间的切换开销是大于线程之间的切换的,因为线程是在同一进城内切换,所以会相对轻松点。
4.进程主要应用于Web服务器和数据库管理系统这些场景,线程则主要应用于多线程下载器和并发处理计算任务的场景,比如Java线程池等等。