基本概念
线程与进程
进程
- 用来加载指令、管理内存、管理IO、磁盘读写
- 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
- 进程就可以视为程序的一个实例比如java.exe
线程
- 一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行
- 在一个进程里可以创建多个线程,一个标准的线程包括线程ID,当前指令指针(PC),寄存器集合和堆栈组成,堆中的内容可共享。处理器在这些线程上高速切换(涉及到上下文切换),让使用者感觉到这些线程在同时执行。如果没有明确的协同机制,线程将彼此独立执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。
- 线程是进程的一个实体(一个进程包含多个进程),是被系统独立调度和分配的最小单元,,也叫轻量级线程(Light Weight Process),并且线程拥有独立的资源包括:栈、线程ID、寄存器和指令指针,其他堆中的资源在内存中共享。共享资源在并发编程中需要增加同步机制防止资源数据处理不对。
- 一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。
- 线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。