单核cpu下,线程实际还是串行执行的,操作系统中有一个组件叫任务调度器,将cpu的时间片(windows下时间片最小约15毫秒)分给不同的线程使用,只是由于cpu在线程间(时间片很短)的切换非常快,人类感觉是同时运行的
总结为一句话:微观串行,宏观并行
一般会将这种线程轮流使用CPU的做法称为并发,concurrent
多核cpu下,每个核(core)都可以调度运行线程,这时候线程可以是并行(parallel)的
更多的时候既有并行也有并发
线程数比核心数多的时候
引用golang语言的创造者Rob Pike的一段描述:
并发是同一时间应对多件事情的能力
并行是同一时间动手做多件事情的能力