<span>并发和并行</span>

并发编程不是一个新的概念,但是随着科学技术的发展,多核危机的出现也让并发编程的话题一度成为热门,支持并发也并不是Java语言的独特优势,还有很多优秀的语言,Erlang,Golang,Scala这些语言也能很好的支持并发编程,学习多线程这一块知识也是一个初级程序员成长的必经之路。
正所谓基础不牢,地动山摇,在学习JavaSE部分的知识只有打好基础,才能为后面的学习做好铺垫,这里引出一个问题。

并发?还是并行?

很多情况下容易把并发和并行搞混淆,但实际上一字之差也是有很大差距的。引用一句经典描述:

  • 并发是问题域中的概念,指同一时间应对(dealing with)多件事情的能力;
  • 并行是方法域中的概念,指同一时间动手做(doing)多件事情的能力。

其实从这句话我们也可以看出来,并发侧重于完成事情的主体是单个的,在某一个时刻内只能完成一件事情,但是又可以几乎同时的处理多件事情;而并行是可以有多个主体去完成多个事情,在同一时刻,可以处理不同的事情。

这里引用大师讲的一个生活中的例子来说明并发和并行。

我的妻子是一位教师,与众多教师一样,她善于处理多个任务,他虽然每次只能做一件事情,但是可以同时处理多个任务。
比如,在听一位学生朗读的时候,它可以暂停学生的朗读,维持课堂秩序,或者回答学生的问题,这是并发但不是并行,
因为只有她一个人,某一个时刻只能进行一件事情。

但是假如她有一位助教,那么她就可以回答学生问题,而同时助教可以聆听朗读,这种方式既是并发,也是并行。

其实类比起来,就好比操作系统中的单核并发处理和多核并行处理,不管是并发还是并行,不得不说都要比传统的串行执行模型更为优秀。

全部评论

相关推荐

05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
S_Holmes:一想到我苦苦追求的迪子私下里却是985的马子,我的心就在滴血😭😭😭
点赞 评论 收藏
分享
码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务