进程
进程指的是一个程序运行后的实例
线程
线程是进程中的执行单元,也是CPU 调度执行的最小单位,一段程序代码执行例如java程序后台会有一个主线程和一个GC线程
线程之间可以共享堆,方法区,全局变量;每个线程都有自己私有的局部变量,栈,程序计数器
协程
协程指的是用户态线程,例如java的虚拟线程;它和操作系统的调度线程不是1对1的关系,它是线程下抽象出来的一个用户态线程,不需要操作系统调度,而是程序自己调度
| 进程 | 线程 | 协程 | |
|---|---|---|---|
| 调度者 | 操作系统 | 操作系统 | 程序 |
| 资源 | 独立 | 共享进程 | 共享线程 |
| 创建成本 | 高 | 中 | 极低 |
| 切换成本 | 高 | 中 | 极低 |
| 数量 | 几百 | 几千 | 几十万 |