并发和并行
- 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
- 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。
进程与线程
两者的概念区别如下:
进程 | 线程 | |
---|---|---|
概念 | 是指一个内存中运行的应用程序 | 是进程的一个执行单元,负责当前进程中程序的执行 |
描述 | 操作系统分配资源的最小单位 | 程序执行的最小单位 |
地址空间 | 进程之间是独立的地址空间 | 同一进程的线程共享本进程的地址空间 |
资源拥有 | 进程之间资源独立 | 同一进程内的线程共享本进程的资源如内存、I/O、cpu等 |
执行过程 | 个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口 | 线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 |
开销 | 进程执行开销大 | 线程执行开销小 |
资源保护 | 能够很好的进行资源管理和保护 | 不利于资源的管理和保护 |
适用 | 进程可以跨机器前移 | 线程适合在SMP机器(双CPU系统)上运行 |
使用 | 对资源的管理和保护要求高,不限制开销和效率时,使用多进程 | 要求效率高,频繁切换时,资源的保护管理要求不是很高时,使用多线程 |
线程调度
- 分时调度:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间;
- 抢占式调度:优先让优先级高的线程使用CPU,如果线程优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。