进程
三个基本特征
- 独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。而对于未建立任何进程的程序,都不能作为一个独立的单位来运行。没有进程本身的同意,其他进程是不能访问到该进程所有的地址空间。
- 动态性:进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。在进程中加入了时间的概念。进程具有自己的生命周期和各种不同的状态,这些概念在程序中都是不具备的。
- 并发性:多个进程可以在单个处理器上并发执行。
并发性与并行性的区别
- 并行性:指在同一时刻,有多条指令在多个处理器上同时执行;
- 并发性:指在同一时刻只能有一条指令执行。但多个进程指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果。
进程的状态
线程
- 线程则扩展了进程的概念,使得同一个进程可以同时并发出多个任务
- 线程是进程的执行单元,是进程的组成部分,一个进程可以拥有多个线程,每个线程必须有一个父进程。
- 线程是独立运行的,并不知道进程中其他线程的存在。运行的线程被挂起时另外一个线程便可以运行,但是,一个线程可以创建和撤销另一个线程。
- 一个程序运行后至少有一个进程,一个进程里可以包含多个线程,但至少要包含一个线程
操作系统可以执行多个任务,每个任务就是进程。一个进程又可以执行多个任务,其中每个任务就是线程
系统中的多线程模型
多线程的优势
- 进程之间不能共享内存,但线程之间共享内存非常容易。
- 系统创建进程时需要为该进程重新分配系统资源,但创建线程则代价小很多,因此使用多线程来实现多个任务并发比多进程的效率高。
- java 语言内置了多线程功能支持,不是单纯地作为底层的调度方式,从而简化了 java 的多线程编程。