当前位置: 首页 > news >正文

并发、并行与多线程关系

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

概述

【并发】:多任务快速切换、宏观上像是同时进行(微观不是)
【并行】:多任务同时进行、微观上同时进行(包含宏观)
【多线程】:一个进程下有多个线程。各个线程执行自己的任务,这些线程可以”同时进行“(可能同时包含并发与并行)

并发详解

  1. Concurrency,是并发的意思。并发的实质是一个物理CPU(单核) 在若干线程之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
  2. 微观角度:所有的并发处理都有排队等候,唤醒,执行等这样的步骤,在微观上他们都是序列被处理的,先后进入队列排队等候执行。
  3. 宏观角度:多个几乎同时到达的请求(或线程)在宏观上看就像是同时在被处理。
  4. 通俗点讲,并发就是只有一个CPU资源,程序(或线程)之间要竞争得到执行机会。并发过程中,任务并不是同时在进行的(微观角度)。但又是同时进行的(宏观角度)

并行详解

并行

  1. Parallelism,即并行,指两个或两个以上事件(或线程)在同一时刻发生,是真正意义上的不同事件或线程在同一时刻,在不同CPU资源呢上(多核),同时执行。
  2. 并行,不存在像并发那样竞争,等待的概念。
  3. 同时运行(微观,宏观)

多线程实现并发,并行详解

  1. java中的Thread类定义了多线程,通过多线程可以实现并发或并行。
  2. 当多个线程被分配同一个CPU核心执行,是多线程实现并发。
  3. 当多个线程同一时刻被分配到不同CPU核心执行,这就是通过多线程实现并行。
  4. 多线程实现了并行还是并行?多线程可能被分配到一个CPU内核中执行,也可能被分配到不同CPU执行,分配过程是操作系统所为,所以,两者都实现了。

参考以下资料:

https://blog.csdn.net/qq_33290787/article/details/51790605
https://www.cnblogs.com/bughui/p/7422214.html
https://www.jianshu.com/p/50fffbf21b39

转载于:https://my.oschina.net/lichuangnk/blog/1818314

相关文章:

  • oracle表结构及数据的导出导入
  • angularjs4+ionic3集成搭建
  • 【C#】获取我的电脑的名字,如This PC、这台计算机
  • 对缓存使用的一些思考
  • nginx负载均衡及配置
  • 构建自己的php扩展函数
  • 基于wpf的skyline三维二次开发框架
  • 高性能缓存服务器 nuster v1.8.8.2 和 v1.7.11.2 发布
  • Centos7配置网络
  • 原生js如何实现图片翻转旋转效果?
  • mtools-你可能没用过的mongodb神器
  • 代码生成器技术乱弹四,弹性万能界面
  • Python函数参数全面介绍
  • 智能指针类模板(五十)
  • TreeMap分析(下)
  • [PHP内核探索]PHP中的哈希表
  • JavaScript-如何实现克隆(clone)函数
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • Babel配置的不完全指南
  • CSS 提示工具(Tooltip)
  • magento2项目上线注意事项
  • ng6--错误信息小结(持续更新)
  • PAT A1120
  • php的插入排序,通过双层for循环
  • tab.js分享及浏览器兼容性问题汇总
  • 编写高质量JavaScript代码之并发
  • 分享几个不错的工具
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 记一次用 NodeJs 实现模拟登录的思路
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前嗅ForeSpider中数据浏览界面介绍
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 实现简单的正则表达式引擎
  • 携程小程序初体验
  • 学习JavaScript数据结构与算法 — 树
  • 国内开源镜像站点
  • #pragma预处理命令
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #微信小程序:微信小程序常见的配置传旨
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (C语言)球球大作战
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (libusb) usb口自动刷新
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (九)c52学习之旅-定时器
  • (三)终结任务
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Thymeleaf用法——Thymeleaf简介
  • (一)VirtualBox安装增强功能
  • (转)可以带来幸福的一本书
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core 版本不支持的问题
  • .NET Core中的去虚
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...