理解并发(concurrent)和并行(parallel)

Ref

https://www.zhihu.com/question/33515481

https://blog.csdn.net/java_zero2one/article/details/51477791

综述

 

并发的关键是你有没有处理多任务的能力,不一定要同时。并行的关键是你有没有同时处理多个任务的能力。

在并发程序中可以同时拥有两个或者多个线程。这意味着,如果程序在单核处理器上运行,那么这两个线程将交替地换入或者换出内存。这些线程是同时“存在”的——每个线程都处于执行过程中的某个状态(new,ready,running,blocked,dead)。

如果程序能够并行执行,那么就一定是运行在多核处理器上。此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行

并发指的是代码的性质,并行指的是物理运行状态。

Concurrent并发

同时存在,不一定同时运行。例如两条队列交替使用同一个咖啡机。如图所示,并发即多个线程交替使用cpu时间片运行。

 

Parallel 并行

同时运行,例如两条队列使用两台咖啡机。线程同时运行在多核处理器的不同核上。

 

扫描二维码关注公众号,回复: 7843122 查看本文章

用图理解

 

Erlang 之父 Joe Armstrong

猜你喜欢

转载自www.cnblogs.com/leejunwei/p/concurrentandparrallel.html