参考链接
IO 操作不占用CPU(从硬盘、从网络、从内存读数据都算IO )
计算占用CPU(如1+1计算)
使用场景
高并发
- 系统接受实现多用户多请求的高并发时,通过多线程来实现
线程后台处理大任务
- 一个程序是线性执行的,如果程序执行到要花大量时间处理的任务时,那主程序就得等待其执行完才能继续执行下面的。那用户就不得不等待它执行完
- 这时候可以开线程把花大量时间处理的任务放在线程处理,这样线程在后台处理时,主程序也可以继续执行下去,用户就不需要等待。线程执行完后执行回调函数
- 大任务处理起来比较耗时,这时候可以起到多个线程并行加快处理(例如:分片上传)
多线程
I/O密集型场景
- I/O密集型场景因为I/O阻塞导致频繁切换
- 线程只占用栈,程序计数器,一组寄存器等少量资源,切换效率高
- 单机多核分布式
多进程
cpu密集型
- 进行频繁的计算操作
- 多机分布式
- 多进程的优势是CPU