Java并发编程四:并发(Concurrent)与并行(Parallel)区别(二)

来源:互联网 发布:5s能用4g网络吗 编辑:程序博客网 时间:2024/05/22 11:45

这段时间在研究并发(Concurrent)与并行(Parallel)的区别,昨天写了 Java并发编程三:并发(Concurrent)与并行(Parallel)的区别(一),今天看到一篇我认为解释的非常形象的一篇文章,分享给大家。原文地址:Concurrent and Parallel Programming

给五岁的孩子解释并发与并行的区别

What’s the difference between concurrency and parallelism? Explain it
to a five year old.

并发与并行的区别是什么呢?给一个五岁的孩子解释一下。

这里写图片描述

Concurrent = Two queues and one coffee machine.
Parallel = Two queues and two coffee machines.

并发=两个队列与一台咖啡机
并行=两个队列与两台咖啡机

在来看看昨天关于并发、并行的定义:

并发(Concurrent):是一种构造程序的方式,把任务分解为一个个独立运行的小任务。通信是协调这些小任务的手段。

并行(Parallel):以分组的方式,同时执行每一组并发任务。

两者的区别:并发是同时处理(dealing)很多的事情,并行是同时做(doing)很多的事情。

两个队列与一台咖啡机会产生并发问题,我们的解决方式有两种:

  1. 增加一台咖啡机,将其中一个队列分配给新增的咖啡机
  2. 将两个队列合并为一个队列,共用一台咖啡机

解决方式1是并行处理的,解决方式2是串行处理的。

总结

我认为并发是任务处理过程中面临的问题,将任务进行合理的分解,采用并行的方式解决问题。

1 0
原创粉丝点击