学习目标进程

线程

并发

并行

内容

一、进程与线程

“专业”点的说法就是:进程是资源分配的最小单位,线程是CPU调度的最小单位。

大哥,我错了,别打脸!

进程

线程就是用来加载指令、管理内存、管理IO的,可以说它是一个“执行中的程序”。程序由指令和数据组成,在程序未被运行时,就是一堆存放在磁盘中的二进制数据。只有当我们运行该程序,通过CPU去执行它里面的指令,将数据加载到内存中,这时才算是开启了一个线程。

例如:我们在windows系统中启动了一个浏览器,此时我们打开任务管理器,则可以在进程栏中查看到该进程。

任务管理器

线程

一个进程中可以分为一到多个线程。它是操作系统能够进行运算调度的最小单位,是允许应用程序并发执行多个任务的一种机制。

一个线程对应一条指令流,将指令流中的一条条指令以一定的顺序交给CPU执行。同一个程序中的所有线程均会独立执行相同程序,且共享同一块内存区域。

例如:我们启动一个播放器程序来播放视频,这个程序就会创建两条线程同时运行,一条线程负责播放画面,另一条线程负责播放声音。两条线程同时进行,这样就不会导致我们只能看到画面听不到声音等情况出现。

二、并发与并行

这两个概念反映的是操作系统利用自身CPU资源来处理程序运行请求的两种不同方式。

并发

在上面我们说到线程中的指令都是交由CPU来执行的。如果将CPU的核数比喻为管道,那么在单核CPU中,我们多个线程是如何通过一个管道实现同时输出的呢?

这里就涉及到了一个时间片的概念。时间片,又称为“量子”或“处理器片”,它是操作系统分配给每个正在运行的进程微观上的一段CPU时间(windows下时间片最小约为15ms,linux上约为5ms)。

由于CPU在线程间的切换(时间片很短)速度非常快,用户是察觉不到线程的切换的,因此会给人一种多线程同时运行的感觉,而实际上线程还是串行执行的。

一般称呼这种线程轮流使用CPU的方式为并发(concurrent)。

轮流运行

并行

由于时代的发展,单核的CPU已经远远无法满足人们的使用需求,因此又有了多核CPU。多核CPU即多个CPU组成,这些CPU集成在一个芯片里,可以通过内部总线来交互数据,共享数据。在CPU的多个核心同时执行的多个任务就是并行任务。

同时运行

总结进程:资源分配的最小单位,加载指令、管理内存、管理IO的。

线程:CPU调度的最小单位,指令流。

并发:同一时间应对(dealing with)多件事情的能力。

并行:同一时间动手做(doing)多件事情的能力。

今天的文章到这里就结束了,小伙伴们有什么建议或者意见请联系我改进哦,你们的支持是我最大的动力!!!

java io 并发编程,JAVA进阶系列 - 并发编程 - 第1篇:进程线程并发并行相关推荐

  1. 【Java IO模式】Java BIO NIO AIO总结

    一同步与异步阻塞与非阻塞 1同步与异步 2阻塞与非阻塞 3IO模式 二BIO 概念描述 特点 代码实现 三NIO 概念描述 特点 代码描述 四AIO 一.同步与异步.阻塞与非阻塞 1.同步与异步 同步 ...

  2. java io 过滤数据,Java IO文件后缀名过滤总结

    实现效果:列出某个目录下的特定后缀名文件(如,列出D盘根目录下txt后缀的文件) import java.io.File; import java.io.FilenameFilter; public ...

  3. java io装饰类,Java IO 装饰类新说

    我不知道各位是师弟师妹们学java时是怎样的,就我的刚学java时的感觉,java.io包是最让我感到一头雾水的.所以现在这篇文,尽可能简单地描述java.io包的结构,希望对java.io同样一头雾 ...

  4. java io null异常,java.io.IOException:所有收集器的初始化失败。最后一个收集器中的错误是:null...

    我是MapReduce的新手,我试图找到问题的解决方案.我试图链接两个地图reduce作业.第一份工作正在执行,但在第二份工作上我是得到一个错误如下java.io.IOException:所有收集器的 ...

  5. java.io.ioexception: 你,java.io.IOException: 你的主机中的软件中止了一个已建立的连接。...

    1.异常表现:我在jsp文件中有一个 表单,里面有一个保存事件按钮.保存 onclick的js函数里我是用ajax提交的数据,用于局部刷新页面. 2.问题原因:在Internet Explorer 的 ...

  6. java.io.FileNotFoundException与java.io.IOException

    FileNotFoundException 开发背景:系统需添加一个云盘模块,有文件上传功能,同步上传大文件传输速度很慢,用户等待时间过长,采取了异步上传.发现有时存在系统找不到指定的文件,导致上传失 ...

  7. Java多线程复习:3(在操作系统中查看和杀死进程线程)

    此博客是记录自己学习过程的记录,仅做参考 Windows下查看和杀死进程线程 查看所有进程 tasklist 查看指定关键字的进程 tasklist | findstr + 关键字 Java程序运行的 ...

  8. java io 缓冲流_记忆系列-Java IO的缓存输入输出流(高效流)

    2019-09-02今天是周一,应该是学校升国旗开学典礼的一天吧~ 然而垃圾的我还是没有找到工作,大专狗是真的没用~简历也不会看你的呀~ 在之前我自己也mark了字节和字符的流,但是呢读取数据量比较大 ...

  9. java io流分为,Java中的IO流按照传输数据不同,可分为和

    Java中的IO流按照传输数据不同,可分为和 答:字节流 字符流 克里斯蒂安 · 麦茨指出:想象的能指就是电影的能指,作为象征的科学,在第三视野范围内的解读,它是( ) 答:建立在共同的永久的背景之中 ...

最新文章

  1. oracle判断值是否为0的高数,SQLServer和Oracle的常用函数对比
  2. 最强 JDK15 安装与讲解,有点想升级,终于要废弃偏向锁了!
  3. Retrofit 2.0:有史以来最大的改进
  4. php中添加访问器,php – 结合访问器和mutator逻辑,为模型添加自定义属性
  5. android中使用DisplayMetrics获取屏幕参数
  6. Tensorflow入门——训练结果的保存与加载
  7. linux如何给各节点时间同步,Linux 系统配置各个节点的时间一致性
  8. 多线程基础-基本概念(一)
  9. web前端【补充】CSS补充
  10. 作者:胡良霖(1973-),男,中国科学院计算机网络信息中心高级工程师
  11. Open vSwitch(OVS)介绍、编译安装与原理
  12. JPA、JTA、XA相关索引
  13. max30102c语言,max30102参考测试程序 网上找的max30102测试程序 - 下载 - 搜珍网
  14. DeFi明斯基时刻:压力测试与启示
  15. 系统背景描述_舞台灯光网络系统及光源角度资料免费分享
  16. 抓包工具Charles--出现unknown情况解决办法
  17. ERP不规范,同事哭晕在厕所
  18. 新库上线 | CnOpenData中国上市公司股吧评论数据
  19. WZOI-354找子串
  20. Android图片圆形和矩形截图功能

热门文章

  1. pandas聚合dataframe某一列的值中的所有元素
  2. JupyterLab显示pyecharts图像
  3. 自动初始化 git Bash脚本
  4. pythonqt4上位机开发_上位机开发之单片机通信实践(一)
  5. Statefulset:部署有状态的多副本应用
  6. GYM 101875 2018 USP-ICMC
  7. python对比图片
  8. 趣拼图最后完成及总结
  9. OAuth 授权timestamp refused问题
  10. Git学习笔记与IntelliJ IDEA整合