1. 直观认知
打开win10的任务管理器,点击“进程”,可以看到很多正在运行的进程:
没错,操作系统会为运行的程序创建相应的进程,进程就是操作系统中运行的一个个可执行程序。
而线程,是比进程更小的、可独立运行的子任务,一个线程里可以创建多个进程,比如在使用QQ时,我们可以一边听着音乐、一边下载文件、一边和朋友聊天等等,这些就是分别由音乐线程、文件下载线程和数据传输线程支持的。
虽然在感觉上,会认为这些事情是同时进行的,其实不然,CPU会为每个线程分配时间片,这些任务是在不断切换执行的,但是由于时间片非常短,所以会有同时进行的错觉。因此引入多线程的好处不言而喻,即:可以最大限度的提高CPU的利用率。
2. 区别和联系
进程:是计算机中的程序关于某数据集合上的一次运行活动,是程序的实体,是系统进行资源分配和调度的基本单位。
线程:是比进程更小的、可独立运行的执行单元,可以看作是轻量级进程,是被系统独立调度和分派CPU的基本单位。
线程与进程的区别和联系其实是相辅相成的:
1. 一个线程只能属于一个进程,但是一个进程可以拥有多个线程且至少拥有一个。
2. 进程是系统进行资源分配和调度的基本单位,线程是被系统独立调度和分派CPU的基本单位。
3. 进程可以申请和拥有系统资源,它不仅仅是静态的代码,更是一次程序动态的运行活动,而线程本身不用有系统资源(除了运行中那点儿必不可少的资源以外),它和同属同一进程的其他线程一起共享相应进程所拥有的全部资源。