Java多线程编程核心技术(第3版)
上QQ阅读APP看书,第一时间看更新

1.16 并发与并行

并发是指一个CPU同时处理多个任务。比如使用单核CPU,那么工作中的多个线程之间其实还是以按顺序的方式被CPU执行,运行效果如图1-70所示。

图1-70 并发处理方式(一)

另一种展示方式如图1-71所示。

为什么在平时使用的过程中感受不到这种处理呢?操作系统中的线程调度器将CPU时间片分配给不同的线程使用,由于CPU在线程间的切换速度非常快,所以使用者会认为多个任务在同时运行,这种线程轮流使用CPU时间片的处理方式称为并发。

并行是指多个CPU或者多核的CPU同时处理多个不同的任务,运行效果如图1-72所示。

图1-71 并发处理方式(二)

图1-72 并行处理方式(一)

另一种展示方式如图1-73所示。

图1-73 并行处理方式(二)

在宏观上并行,在微观上还是有并发的存在,因为每个CPU还是以并发的方式处理多个任务,只不过有多个CPU在同时并行处理。

比如A同学,一边打游戏,一边吃饭,一边写作业就是并发。

比如A同学,找了B同学代打游戏,找了C同学代写作业,自己吃饭,这就是并行。

综上,并发是逻辑上的同时发生,而并行是物理上的同时发生。