多线程并发和并行的区别

经典C#面试:C#下多线程的实现方式与区别详解,包括并行编程和并发编程 经典C#面试:一文带你了解C#下多线程的实现方式与区别详解,包括并行编程和并发编程 阅读详情

背景

 对于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进行高效计算
操作系统(2)- 多进程和多线程的区别,高并发和并行 多进程和多线程的区别 进程是资源分配的最小单位,线程是CPU调度的最小单位。 高并发和并行 并发:当系统只有一个CPU,多个线程,CPU把运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。并发=间隔发生 并行:当系统有>1的CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Paralle 阅读详情

相关推荐

【新华三】通过路由复制实现Public与VRF路由互通

如上图所示,S6900设备里有两张表,一张是public路由表,默认所有的路由都存放在public路由表里;除此之外还创建了VRF test,因此此设备还有VRF test路由表。通过路由复制实现Public路由和VRF路由互通,默认情况下VRF里的路由单独一张路由表,默认情况下与public路由表相互隔离,两张表之间不可互访。此时的public路由表里面并没有test的路由表。public路由表与VRF路由表之间相互隔离。此时VRF test里的路由也没有其他VRF或Public里的路由,相互隔离。

五大连池的镜子 5279

并发、并行、单线程、多线程的区别

并行和并发的区别 并发:一个处理器可以同时处理多个任务,这是逻辑上的同时发生。 并行:多个处理器同时处理多个不同的任务,这是物理上的同时发生。

qq_50542009的博客 3321

AD9371 官方例程构建及单音信号收发

项目构建基本流程和AD9361差不多,由于官方使用的ZCU102,记录下移植遇到的一些问题最终接收到正确的正弦波Errors: 0Errors: 0Errors: 0Errors: 0AD9361。

weixin_44630490的博客 2973

Java 多线程之并行流(parallelStream)

并行流是Java中Stream API的一部分,用于在多核处理器上并行执行流操作。在Java 8及更高版本中引入的Stream API提供了一种新的处理集合的方式,使得开发者能够更轻松地进行数据处理和操作。在使用Stream API时,可以将集合转换为流,然后进行各种操作,例如过滤、映射、排序等。在这个过程中,流可以是串行流(Sequential Stream)或并行流(Parallel Stream)。并行流通过使用多线程并行处理数据,充分利用多核处理器的优势,从而在某些情况下提高处理速度。

QIFU的专栏 1万+

【LLC快速上手系列】LLC轻载时:开关频率 + 死区时间 联合优化!

轻载优化,频率别飞天,死区要有耐心。两手一起抓,效率高到笑。😎。

weixin_43199439的博客 1183

ROS2入门到精通—— 2-9 ROS2实战:Nav2常见的工程问题(参考3D视觉工坊)

本文介绍了Nav2常见的工程问题,还有调试DWB的一些经验,以及DWB的一些缺点

BigDavid123的博客 1068

多线程:并行与并发的区别

一、并行是对于cpu多个核心来说的。 并行指的在同一时刻有多个任务一起执行。 注意,是同一时刻。一个cpu核心在同一时刻只能执行一个线程的任务,所以一个cpu核心是无法在同一时刻执行多个任务的。 所以要同一时刻执行多个任务,这些任务只有被分配到不同的cpu核心上,然后多个核心分别在同一时刻一起执行这些任务。。那么这些任务线程才能叫做是并行执行。 二、并发是对于cpu单个核心来说的。 上面...

祁东握力的博客 1745

软件设计师考试下午题代码部分详解:23种设计模式全面解析

软件设计师考试的下午题通常会考察设计模式的应用,这部分内容既是重点也是难点。本文将系统地介绍考试中常见的23种设计模式,通过详细代码示例和通俗易懂的讲解,帮助考生掌握这些核心知识点,提高应试能力。概念:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。适用场景:系统要独立于产品的创建、组合和表示时;系统要由多个产品系列中的一个来配置时。@Override@Override@Override@Override// 产品族A@Override。

4万+

多线程(Multi-threading)和并行程序(Parallel Programming)详解

Multi-threading and Parallel Programming什么是线程(thread)?什么是进程(process)?线程池线程的描述性编程表示深入多线程大量的多线程应用程序Google Chrome 多线程是一种广泛的编程和执行模型,该模型允许在一个进程的上下文中存在多个线程。这些线程中的每一个都可以并行运行,并且这些线程共享相似的地址空间。好吧,让我们从头开始。 什么是线程(thread)? thread的执行是可以由调度程序独立管理的最小程序指令序列,调度程序通常是操作系统的一部分

努力是为了站在万人之中,成为别人的光 6654

复现CVE-2014-085(Apache ZooKeeper 未授权访问漏洞)

默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据。

记录并分享学习安全的知识点.. 2175

我用 Python 监听了自己的键盘,生成击键热力图,看看每天到底在“摸鱼”还是“搬砖”?

数据采集(监听)、持久化(I/O)与可视化展示,必须是三个完全独立的模块,这符合单一职责原则。在多线程读写 Python 字典时,锁住的时间要尽可能短,防止 I/O 线程把高频的监听线程阻塞住。这类涉及底层的代码与“键盘记录木马”只有一线之隔。永远不要把击键记录通过网络上传,所有数据必须localhost消化。人脑对枯燥的 JSON 日志是不敏感的,但对颜色和空间极其敏感。这也是为什么 Prometheus + Grafana 是标配。使用ctypes。

BUG猿的博客 193

漫道多线程(一):多线程与并行计算简述

漫道多线程(一):多线程与并行计算简述 文章目录漫道多线程(一):多线程与并行计算简述什么是并行计算什么是多线程并行计算的好处1.硬件上的迫切需要2.更好的提升资源利用率为什么要使用多线程实现并行计算CPU时间分片并行与并发并发并行如何在java中使用多线程继承Thread类实现Runable接口(java8的Lambda可以轻松实现)java线程模型以及编写多线程代码会面临的问题如何解决多线程 并发中数据不一致的问题设计上如何避免使用锁保护脆弱的数据synchronized锁volatile锁原子类锁 什

qq_35824590的博客 2679

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2447

并发和并行,异步与多线程区别

1、并发和并行的区别 可由上图形象指出两者的区别: 1)定义: 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。 来个比喻:并发和并行的区别就是一个人同时吃三个馒头和

woliuyunyicai的专栏 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【多线程与高并发】并发和并行的区别是什么?

每天进步一点点! 并发和并行的区别是什么? 并发:多个任务在同一个CPU核上,按细分的时间片轮流执行,从逻辑上看任务是同时执行的; 并行:多个处理器或多核处理器同时处理多个任务。 ...

Mind_programmonkey的博客 872

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

并发编程之 线程与进程、什么是多线程?并行和并发有什么区别?

1.线程是什么?进程是什么?二者有什么区别和联系? 进程:程序运行资源的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:是CPU独立运行和独立调度的基本单位,必须依赖进程而存在 两者的联系:进程和线程都是操作系统所运行的程序运行的基本单元。 区别: (1)进程具有独立的空间地址,一个进程崩溃后,在保护模式下不会对其它进程产生影响。 (2)线程只是一个进程的不同执行路径,线程有自己的堆...

博客简介 1610

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

多线程并行和并发区别的简单理解

多线程并行和并发的区别是什么? 目录 多线程并行和并发的区别是什么? 多线程相关概念 进程 线程 此时再来看多线程并行和并发的区别: 并行 并发 多线程相关概念 官方定义是: 多线程是指从软件或者硬件上实现多个线程并发执行的技术。 通俗来讲是: 指一个或多个进程有多条执行路径。 进程 • 指的是可以执行的程序或文件(例如: exe) 可以抽象理解为: 现实生活中的 汽车 线程 • 指的是进程的指定单元,也叫执行路径 可以抽象理解为: ...

Joieeee的博客 4494

教你认识Java多线程——线程和进程的区别,并行和并发的区别

线程和进程之间的区别 线程可以理解成是在进程中独立运行的子任务。比如,QQ.exe 运行时就有很多的子任务在同时运行。像好友视频、下载文件、传输数据、发送表情等,这些不同的任务或者说功能都可以同时运行,其中每一项任务完全可以理解成是“线程”在工作,传文件、听音乐、发送图片表情等功能都有对应的线程在后台默默地运行。 进程具有一定独立功能的程序关于某个数据集合上的一次运行活动,是操作系统进行资源分配和调度的一个独 立单位。 区别: 线程不能看作独立应用,而进程可看做独立应用 进程有独立的地址空间,相.

jsqzy的博客 279

OS之并发与并行,异步和多线程的区别

并发和并行的区别可由上图形象指出两者的区别: 1)定义: 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。 来个比喻:并发和并行的区别就是一个人同时吃三个馒头和三个人同时吃三个馒头;在单CP

AixsCode 1275

python多线程和多进程socket服务端,并发和并行区别

从知识点的角度来看,本身两者其实没有什么关系:网络编程,基于网络基础知识、socket模块实现网络的数据传输。并发编程,基于多进程、多线程等 来提升程序的执行效率。但是,在很多 “框架” 的内部其实会让两者结合起来,使用多进程、多线程等手段来提高网络编程的处理效率。

Python 388

多线程并行和并发的区别

多线程并行和并发的区别 并行:就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU) 并发:是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。 比如我跟两个网友聊天,左手操作一个电脑跟甲聊,同时右手用另一台电脑跟乙聊天,这就叫并行。 如果用一台电脑我先给甲发个消息,然后立刻再给乙发消息,然后再跟...

LeoZuosj的博客 983
上一篇: @Value(“${}“) 采坑记录
下一篇: parallelStream()并行滥用的后果
鲫鱼哥
博客等级 码龄10年 18粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值