并发和并行性有什么区别?

只谈情不闲聊 提交于 2019-12-14 16:28:25

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

并发和并行性有什么区别?

示例被赞赏。


#1楼

并发性:具有共享资源潜力的多个执行流

例如:两个线程争用一个I / O端口。

平行主义:将问题分成多个相似的块。

例如:通过在文件的每半部分上运行两个进程来解析大文件。


#2楼

并发是指两个或多个任务可以在重叠的时间段内启动,运行和完成。 并不一定意味着它们都将同时运行。 例如,单核计算机上的多任务处理

并行是指任务实际上在多核处理器上同时运行。


引用Sun的《 多线程编程指南》

  • 并发:至少有两个线程在进行时存在的条件。 并行性的一种更通用的形式,可以包括时间切片作为虚拟并行性的一种形式。

  • 并行性:当至少两个线程同时执行时出现的条件。


#3楼

他们解决了不同的问题。 并发解决了CPU资源不足和任务繁多的问题。 因此,您可以通过代码创建线程或独立的执行路径,以便在稀缺资源上共享时间。 直到最近,由于CPU的可用性,并发一直是讨论的主要内容。

并行解决了以下问题:找到足够多的任务和适当的任务(可以正确拆分的任务),然后将其分配给大量CPU资源。 并行性当然一直存在,但由于多核处理器非常便宜,因此它已经走在前列。


#4楼

我喜欢Rob Pike的演讲:并发不是并行(更好!) (幻灯片) (演讲)

Rob通常会谈论Go,并且通常会通过直观的解释来解决并发与并行性问题! 这是一个简短的摘要:

任务:让我们燃烧一堆过时的语言手册! 一次一个!

并发:任务有许多并发分解! 一个例子:

并行性:如果至少有两个地鼠同时工作或不同时工作,则先前的配置会并行发生。


#5楼

补充别人的话:

并发就像让杂耍杂耍的人玩弄许多球。 不管看起来如何,魔术师一次只能抓/扔一个球。 并行性是多个杂耍者同时玩杂耍球。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!