并发和并行

单核 cpu 下,线程实际还是 串行执行 的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是同时运行的 。
总结为一句话就是: 微观串行,宏观并行 ,一般会将这种 线程轮流使用 CPU 的做法称为并发, concurrent。

多核 cpu下,每个 核(core) 都可以调度运行线程,这时候线程可以是并行的。


引用 Rob Pike 的一段描述:
并发(concurrent)是同一时间应对(dealing with)多件事情的能力
并行(parallel)是同一时间动手做(doing)多件事情的能力

例子
家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这时就是并发
家庭主妇雇了个保姆,她们一起这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一个人用锅时,另一个人就得等待)
雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行

Java并发编程:并发和并行相关推荐

  1. python并发编程调优_Python并发编程-并发解决方案概述

    Python并发编程-并发解决方案概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.并发和并行区别 1>.并行(parallel) 同时做某些事,可以互不干扰的同一个时 ...

  2. Java并发编程—并发和并行、线程上下文

    文章目录 并发和并行 并发和并行的区别 上下文切换 相关问题 为什么循环次数少的情况下,单线程快? 什么时候需要用多线程? 线程上下文切换消耗的时长? 用什么测试的线程上下文?面试回答下面的工具会加分 ...

  3. Java并发编程-并发工具包(java.util.concurrent)使用指南(全)

    1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Ja ...

  4. Java并发编程-并发工具包java.util.concurrent使用指南

    译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新 本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去 Java并发工具包java.util.concurren ...

  5. java并发编程(并发编程的三个问题)

    什么是并发编程? 首先我们要知道什么是并发? 什么是并行? 并行: 多件事情在同一时刻同时发生 并发: 在同一时间内,多个事情交替执行 并发编程: 比如抢票,秒杀等在同一场景下,有大量的请求访问同一资 ...

  6. C#并发编程之初识并行编程

    写在前面 之前微信公众号里有一位叫sara的朋友建议我写一下Parallel的相关内容,因为手中商城的重构工作量较大,一时之间无法抽出时间.近日,这套系统已有阶段性成果,所以准备写一下Parallel ...

  7. java并发编程并发容器_Java并发编程:同步容器

    为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器.并发容器.阻塞队列.Synchronizer(比如CountDownLatch).今天我们就来讨论下同步容器. ...

  8. java并发编程——并发编程的挑战

    本文是阅读<Java并发编程的艺术>后将自己记忆的理论知识和理解复写出来的产物,若有不足,欢迎指正! java并发编程是什么?让多个线程同时处理一个任务,从而达到快速的效果.但不是所有场景 ...

  9. 并发编程 — 并发数据结构--转载

    并发编程系列文章:        初解线程池:http://ray-yui.iteye.com/blog/2072463        详解线程池:http://ray-yui.iteye.com/b ...

  10. 并发编程-并发编程的挑战

    并发编程的挑战 并发编程中,我们或多或少会遇到线程上下文切换.死锁.受限于软硬件资源限制的挑战. 上下文切换 CPU会通过时间片分配算法给各个线程分配时间片来实现多线程机制.获得CPU时间片的线程将可 ...

最新文章

  1. 这个奇葩打字外设火了,一分钟500词比说话还快,直接被打字比赛禁用
  2. linux命令大全增删改查,crudini命令
  3. Android 11 修改libcore Cipher AS测试
  4. leetcode844. 比较含退格的字符串
  5. [导入]Ajax使用初步
  6. 另一个域的cookie_一定要知道的第一方Cookie和第三方Cookie
  7. python解释器、pycharm安装及环境变量配置
  8. 怎样避免MYSQLD被OOM-KILLER杀死?
  9. php如何删除服务器图片,php如何删除服务器文件
  10. NVMe驱动解析-前言
  11. nurbs曲线拟合程序_一种基于NURBS的空间自由曲线拟合方法与流程
  12. office2003和office2007及office2010共存的方法
  13. 程序员对老板说:老子,明天不上班!结果...
  14. 【bzoj4484】【jsoi2015】最小表示
  15. 万国数据表现不佳的风险很高
  16. android qq登录分析,Android第三方登录之QQ登录
  17. Dell PowerEdge T630安装GPU
  18. 最新版快手去水印原理及源码,简单的原理与面临的挑战
  19. 大学生计算机课程内容1000字,大学生计算机实习报告1000字【一】.doc
  20. 如何给PDF文件文本添加绿色下划线?PDF下划线工具怎么用?

热门文章

  1. POI单元格合并(合并后边框空白修复)、自动列宽、水平居中、垂直居中、设置背景颜色、设置字体等常见问题
  2. total是什么牌子的电脑_Total Control告诉你如何在电脑上发朋友圈
  3. 合工大机器人足球仿真robocup2D球队代码实验七实验验收
  4. Java之对象转型(casting)
  5. PV,V,UV的概念,采集数据
  6. python编辑器geany_另外一款编辑器 Geany
  7. 华师大计算机基础在线作业,华东师范大学计算机作业答案
  8. 怎么发现不了同一网络的其他计算机,局域网中看不到其他计算机怎么办
  9. autoexec.bat文件的所在位置
  10. 安装VC 6.0,出现 DOSX.EX must be in your AUTOEXEC.NT的信息