进程
电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。比如QQ、酷狗播放器、电脑管家等等。
多个进程可以并发执行。从宏观上看,所有的进程都在被cpu执行,但是微观上去理解的话,在某一个时间点,cpu(单核)只能处理一个进程中的任务。
进程启动执行,系统会给该进程分配独立的资源供它自己使用。进程之间都拥有自己的系统资源,不共享系统资源。
进程是系统进行资源分配的最小单位。
线程
进程想要执行任务就需要依赖线程。换句话说,进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。
线程是进程中的一条任务线;进程中的一条完整的执行路径。进程中所有的任务,都是由进程中的线程来完成的。
1.线程不能独立存在,必须依赖于某一个进程。
2.进程中至少要包含一个线程,可以包含多个线程。进程中的第一个线程,可以称为主线程。
3.线程可以并发执行。
4.进程中的所有的功能代码都是由进程中的线程来执行的。
5.线程是cpu进行调度执行的最小单位。(实际的)
6.线程是抢夺cpu控制权的最小单位。(形象的)
7.一个进程中的线程会共享所在进程的所有资源。
多线程
提到多线程这里要说两个概念,就是串行和并行。
串行,其实是相对于单条线程来执行多个任务来说的。
在串行中它是按照一定的顺序去执行任务的的,也就是说,必须等执行完A之后才能开始执行B,它们在时间上是不可能发生重叠的。
并行:下载多个文件,开启多条线程,多个文件同时进行下载,这里是严格意义上的,在同一时刻发生的,并行在时间上是重叠的。
一个进程运行时产生了多个线程。
即使某一个线程被阻塞了,被阻塞的线程不会影响其他的线程,其他的线程的任务继续执行。
并发,并不是同时进行的,而是交替进行的,而由于CPU的运算速度非常的快,会造成我们的一种错觉----在同一时间内进行了多种事情。
并行,则是真正意义上的同时进行多种事情,这种只可以在多核CPU的基础下完成。