良许Linux教程网 干货合集 详解多线程并发和并行的区别

详解多线程并发和并行的区别

背景

对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案。

随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorService),很多人选择了parallelStream() 并行流,底层使用forkjoin实现并行处理。

那么并行和并发又有什么区别?究竟改如何选择?滥用时又会有什么影响?

这些问题我分以下几篇文章进行详细说明:

\1. 多线程并发和并行的区别 (本文)

\2. parallelStream()并行滥用的后果

\3. forkjoin和forkjoinpool讲解

\4. 线程池正确用法

并发和并行共同点

都利用多线程技术

目的都是提高CPU的使用率

并发和并行区别

侧重点不同

  • 并发(concurrency):强调一个处理器同时处理多个任务,并不是正在同时运行。
  • 并行(parallelism):强调多个处理器或者是多核的处理器同时处理多个不同的任务,同时运行多段代码
多线程并发和并行的区别_多线程技术
多线程并发和并行的区别_多线程技术

使用场景不同

  • io密集场景

场景应用程序开发,提供http接口、数据库查询、微服务调用都是io请求,io等等时几乎不消耗cpu,这是为了提供cup使用率,建议使用多线程并发,线程数可以远大于cpu核数。

  • cup密集场景

    对应大量的加减乘除运算、md5、hash等运算操作,需要持续使用cpu,需要让多核cpu并行运算,适合使用forkjoin并行计算。

    技术场景多线程不足,使用多线程技术,也能提高性能,但是线程设置过大会浪费cpu线程切换的时间,如果线程任务分配不均匀,会导致有的cpu忙碌有的cpu空闲。

技术栈不同

  • 并发编程

    jdk1就支持多线程Thread

    jdk5加入Thread pool和juc

    这些都是对多线程的支持,多线程代码可以单核cpu和多核cpu机器上,使用多线程可以在io并发高时,有效利用cpu资源。

  • 并行编程

    jdk7加入fork-join库

    jdk8加人parallelstream

    这些是对并行计算的支持,目的是同时使用多核cpu进行高效计算

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部