多线程基础
现代操作系统(Windows,macOS,Linux)都可以执行多任务。多任务就是同时运行多个任务,例如:
![notion image](https://www.notion.so/image/https%3A%2F%2Fliaoxuefeng.com%2Fbooks%2Fjava%2Fthreading%2Fbasic%2Fmultitask.jpg?table=block&id=13edd76b-576d-8057-96d3-db0db529a3ee&cache=v2)
CPU执行代码都是一条一条顺序执行的,但是,即使是单核cpu,也可以同时运行多个任务。因为操作系统执行多任务实际上就是让CPU对多个任务轮流交替执行。
例如,假设我们有语文、数学、英语3门作业要做,每个作业需要30分钟。我们把这3门作业看成是3个任务,可以做1分钟语文作业,再做1分钟数学作业,再做1分钟英语作业:
![notion image](https://www.notion.so/image/https%3A%2F%2Fliaoxuefeng.com%2Fbooks%2Fjava%2Fthreading%2Fbasic%2Fhurry.jpg?table=block&id=13edd76b-576d-80c5-ab68-d0c0fcb03b58&cache=v2)
这样轮流做下去,在某些人眼里看来,做作业的速度就非常快,看上去就像同时在做3门作业一样
![notion image](https://www.notion.so/image/https%3A%2F%2Fliaoxuefeng.com%2Fbooks%2Fjava%2Fthreading%2Fbasic%2Ffast.gif?table=block&id=13edd76b-576d-80ad-ad85-d24b2ba5e21d&cache=v2)
类似的,操作系统轮流让多个任务交替执行,例如,让浏览器执行0.001秒,让QQ执行0.001秒,再让音乐播放器执行0.001秒,在人看来,CPU就是在同时执行多个任务。