并行和并发有什么区别?
并发:一个时间段内,一个 CPU 核上 来回切换着 执行多个任务,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。
并行:同一时刻,多个处理器或多核处理器 同时处理多个任务,是真正意义上的“同时进行”。
串行:由一个线程按顺序执行多个任务。由于任务、方法都在一个线程执行所以不存在线程不安全情况,也就不存在临界区的问题。
做一个形象的比喻:
并发 = 两个队列和一台咖啡机。
并行 = 两个队列和两台咖啡机。
串行 = 一个队列和一台咖啡机。
或者这样理解:
并发相当于闪电侠(相当于一个cpu),并行相当于鸣人的影分身(多个cpu,或者多核cpu),他们两个人都同时 画两幅画,闪电侠快速在两幅画之间切换着画,而鸣人直接开启影分身 同时分别 在两幅画上作画。