多线程并发和并行的区别

多线程并发和并行的区别背景 对于 java 开发从业人员来说 并发编程是绕不开的话题 juc 并发包下提供了一系列多线程场景解决方案 随着 jdk1 8 的普及 多线程处理问题 除了使用使用线程池 ExecutorServ 很多人选择了 parallelStre 并行流 底层使用 forkjoin 实现并行处理 那么并行和并发又有什么区别 究竟改如何选择 滥用时又会有什么影响 这些问题我分以下几篇文章进行详细说明 1 多线程并发和并行的区别 2 parallelStre 并行滥用的后果 3

背景

并发和并行共同点

  • 都利用多线程技术
  • 目的都是提高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进行高效计算


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229366.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:52
下一篇 2026年3月16日 下午4:53


相关推荐

  • PyCharm使用教程 — 4、界面/菜单栏介绍

    PyCharm使用教程 — 4、界面/菜单栏介绍界面介绍从大的方向来看PyCharm分为菜单栏区域/项目结构区域/代码区域/运行信息区菜单栏提示:菜单栏快捷键为Alt+首字母,比如File的快捷键Alt+F,Edit的快捷键Alt+E1、File(文件)NewProject:创建新的项目New…:新建一些中间件配置,如MySQL、MongoDB、DDL等以及相关驱动NewScratchFile:划痕文档,也称为临时文件,可以创建各种类型的文件进行临时处理,在里面“打草稿”,

    2022年8月27日
    5
  • pycharm加注释的快捷方式_pycharm出现缩进错误

    pycharm加注释的快捷方式_pycharm出现缩进错误1.注释pycharm注释快捷键:"Ctrl" +  "/"2.批量缩进(或名"对齐")缩进:Tab反向缩进:Shift+Tab

    2022年8月27日
    6
  • android 浏览器全屏显示[通俗易懂]

    android 浏览器全屏显示[通俗易懂]业务需求:浏览器设置中支持全屏显示的功能。 分析:只需要在设置界面上增加是否全屏的checkBox, 然后BrowserActivity中读取这个值, 来设置窗口的Style. 修改: 1. 修改项目下的res/xml文件夹下的browser_preferences.xml文件, 添加<CheckBoxPreference     …

    2022年5月14日
    65
  • 智谱大模型API请求地址如何正确配置?

    智谱大模型API请求地址如何正确配置?

    2026年3月12日
    4
  • 一致性哈希 哈希槽(哈希碰撞和哈希冲突)

    背景随着memcache和redis的出现,更多人认识到了一致性哈希。一致性哈希用于解决分布式缓存系统中的数据选择节点存储问题和数据选择节点读取问题以及在增删节点后减少数据缓存的消失范畴,防止雪崩的发生。哈希槽是在rediscluster集群方案中采用的,rediscluster集群没有采用一致性哈希方案,而是采用数据分片中的哈希槽来进行数据存储与读取的。一致性哈希一致性hash是一个0-2^32的闭合圆,(拥有2^23个桶空间,每个桶里面可以存储很多数据,可以理解为s3的存储桶)所

    2022年4月14日
    82
  • python pymssql_Python模块-pymssql[通俗易懂]

    python pymssql_Python模块-pymssql[通俗易懂]Python默认的数据库是SQLlite,不过它对MySql以及SQLserver的支持也可以。如果想链接操作SQLserver,需使用第三方包pymssqlpymssql是一个Python的数据库接口,基于FreeTDS构建,对_mssql模块进行了封装,遵循Python的DBAPI规范,而FreeTDS是一个C语言连接sqlserver的公共开源库工作原理使用connect创建连接对象;…

    2022年6月16日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号