- 什么是进程和线程?
进程是指运行中的程序,在windows里可以在任务管理器中查看;线程是CPU调度的基本单位,进程可以看成程序执行的一个实例。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。进程就是线程的容器,需要线程利用进程中的一些资源,处理一个代码、指令。最终实现进程所预期的结果。 - 进程和线程的区别?
1> 进程是操作系统分配的资源,而线程是CPU调度的基本单位
2> 资源方面:同一个进程下的线程共享进程中的一些资源。线程同时拥有自身的独立存储空间,进程之间的资源通常是独立的。
3> 数量不同:进程一般指的就是一个进程。线程是依附于某个进程的,而且一个进程中至少会有一个或多个线程
4> 开销不同:线程和创建和终止的时间是比较短的。而且线程之前的切换比进程之间的切换速度快的多。进程之前的通讯很麻烦,一般要借助内核才可以实现,而线程之前的通讯很方便。 - 什么是多线程?
多线程是指单个进程中同时运行多个线程。多线程的目的是为了提供CPU的利用率。
可以通过避免一些网络IO或者磁盘IO等需要等待的操作,让CPU去调度其他线程。可以大幅度的提升程序的效率,提供用户体验。 - 多线程的局限
线程不是越多越好的,如果线程数量特点多,CPU在切换线程上下文时,会额外造成很大的消耗
任务的拆分依赖业务场景,有些业务很难拆分,不是多线程处理更好
虽然多线程带来了一定的性能提升,如果再做一些操作时,多线程如果操作临界资源,可能会发生一些数据不一致的安全问题,甚至涉及到锁操作时,会造成死锁问题。 - 串行、并行、并发
串行是一个一个处理;并行是同时处理;多线程的并发:CPU在极短的时间内,反复切换执行不同的线程,看似好像是并行,但是只是CPU高速的切换。并行就是多核CPU同时调度多个线程,是真正的多个线程同时执行。单核CPU无法实现并行效果,单核CPU是并发。 - 同步异步、阻塞非阻塞
同步与异步:执行某个功能后,被调用者是否会主动反馈信息
阻塞和非阻塞:执行某个功能后,调用者是否需要一直等待结果的反馈。
两个概念看似相似,但是侧重点是完全不一样的。