一、线程与进程
进程(process)是 CPU 分配资源的基本单位,拥有独立的内存空间和资源,而线程(thread)是 CPU 调度的基本单位。
一个进程可以有多个线程,线程可以想象成是进程请来做事的工人。
二、为什么需要多线程
我们都知道 CPU 的速度实在是太快了,内存
、硬盘
、网络
完全拍马不及,而且现代 CPU 大多都已升级为多核CPU
,这也为多线程的施行创造了条件。
多线程
的出现就是为了解决由于 CPU 飞快的运行速度与 IO 缓慢读取之间的差距而造成的性能过剩。简而言之,多线程是为了更好地、更充分地利用 CPU
。
如:在保存一个庞大的word文档时,将该任务交给一个线程去执行,主线程维持正常的操作,不会造成保存时界面卡死的情况。
有的小伙伴可能想那用多进程
不就好了,但是进程与进程之间是没法共享数据的。
三、多线程带来了什么问题
多线程可以看做是:将复杂的任务拆分,交给多个不同的工人(线程)去完成不同的部分,那完成之后的结果要如何收集汇总呢?
当然是通过操作共享变量来完成,而这就是多线程几乎所有问题的起源 —— 变量紊乱,即程序执行完成后,共享变量的值不可预期。
解决方法:加锁
和解锁