【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
并发和并行性有什么区别?
示例被赞赏。
#1楼
并发性:具有共享资源潜力的多个执行流
例如:两个线程争用一个I / O端口。
平行主义:将问题分成多个相似的块。
例如:通过在文件的每半部分上运行两个进程来解析大文件。
#2楼
并发是指两个或多个任务可以在重叠的时间段内启动,运行和完成。 并不一定意味着它们都将同时运行。 例如,单核计算机上的多任务处理 。
并行是指任务实际上在多核处理器上同时运行。
引用Sun的《 多线程编程指南》 :
并发:至少有两个线程在进行时存在的条件。 并行性的一种更通用的形式,可以包括时间切片作为虚拟并行性的一种形式。
并行性:当至少两个线程同时执行时出现的条件。
#3楼
他们解决了不同的问题。 并发解决了CPU资源不足和任务繁多的问题。 因此,您可以通过代码创建线程或独立的执行路径,以便在稀缺资源上共享时间。 直到最近,由于CPU的可用性,并发一直是讨论的主要内容。
并行解决了以下问题:找到足够多的任务和适当的任务(可以正确拆分的任务),然后将其分配给大量CPU资源。 并行性当然一直存在,但由于多核处理器非常便宜,因此它已经走在前列。
#4楼
我喜欢Rob Pike的演讲:并发不是并行(更好!) (幻灯片) (演讲)
Rob通常会谈论Go,并且通常会通过直观的解释来解决并发与并行性问题! 这是一个简短的摘要:
任务:让我们燃烧一堆过时的语言手册! 一次一个!
并发:任务有许多并发分解! 一个例子:
并行性:如果至少有两个地鼠同时工作或不同时工作,则先前的配置会并行发生。
#5楼
补充别人的话:
并发就像让杂耍杂耍的人玩弄许多球。 不管看起来如何,魔术师一次只能抓/扔一个球。 并行性是多个杂耍者同时玩杂耍球。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3143018