并发:指的是两个或者多个事件(任务)在同一时间段内发生的。(交替执行)
并行:指的是两个或者多个事件(任务)在同一时刻发生(同时发生)(同时执行)
线程与进程
进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个线程,进程也是程序的一次执行过程,是系统运行程序的基本单位,系统运行一个程序就是一个进程从创建、运行到消亡的过程。
线程:线程是进程中的一个执行单元,负责当前进程中程序的运行,一个程序中至少有一个线程,一个进程可以有多个线程,这个应用程序也可以称为多线程程序。
简而言之,一个程序运行后至少有一个进程,一个进程中可以包含多个线程,。
备注:单核处理器的计算机肯定不能并行的处理多个任务的,只能是多个任务在单个cpu上并发的执行。同理,线程也是一样的,从宏观角度上理解线程是一种并行运行的,但是从微观上分析并行运行不可能,即需要一个一个线程的去执行,当系统只有一个cpu的时候,线程会以某种顺序执行多个线程,我们把这种情况称之为线程调度。
线程调度:
分时调度:所有的线程轮流使用CPU的使用权,平均分配给每个线程占用CPU的时间
抢占式调度:优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机一个线程执行,Java使用的就是抢占式调度方式来运行线程程序。