(一)进程与线程

一、进程和线程的概念

1.1 进程

  • 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。
  • 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。
  • 进程可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360安全卫士等)。

1.2 线程

  • 一个进程之内可以分为一到多个线程
  • 一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行
  • Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。在 Windows 中进程是不活动的,只是作为线程的容器

1.3 二者对比

  • 进程基本上相互独立的,而线程存在于进程内,是进程的一个子集
  • 进程拥有共享的资源,如内存空间等,供其内部的线程共享
  • 进程间通信较为复杂
    • 同一台计算机的进程通信称为 IPC(Inter-process communication)
    • 不同计算机之间的进程通信,需要通过网络,并遵守共同的协议,例如 HTTP
  • 线程通信相对简单,因为它们共享进程内的内存,一个例子是多个线程可以访问同一个共享变量
  • 线程更轻量,线程上下文切换成本一般要比进程上下文切换低

二、并行和并发的概念

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

  • 并发(concurrent)是同一时间应对(dealing with)多件事情的能力
  • 并行(parallel)是同一时间动手做(doing)多件事情的能力

例子:

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

三、总结

  • 程序是有指令和代码组成的。进程是运行中的程序,进程可以视为程序的一个实例。一个进程之内可以分为一到多个线程。一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行。
  • 单核 CPU 下,线程实际还是 串行执行的。
  • 并行:多个 CPU 同时执行多个任务,比如:多个人同时做不同的事。
  • 并发:一个 CPU(采用时间片)同时执行多个任务,比如:秒杀、多个人做同一件事。
  • 一般会将这种线程轮流使用 CPU 的做法称为并发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙系统的开发与学习

1.开发工具的下载 DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟 安装、环境配置时,建议 自定义目录 注意:路径中不要有 中文、特殊字符。 2.ArkTS基础总结 1)三种数据类型 ① string 字符串:描述信息 ② number 数…

银联快捷支付的优点!

快速支付,又称电子支付或第三方支付,在行业中得到了广泛的应用。用户只需通过银行完成交易。方便快捷是指银行可以在任何条件下支持用户之间的转账、支付等即时结算服务。快速支付是指用户可以通过手机实现银行卡等相关操作。然而,现在大多数…

Java后端每日面试题(day1)

目录 JavaWeb三大组件依赖注入的方式Autowire和Resurce有什么区别?Spring Boot的优点Spring IoC是什么?说说Spring Aop的优点Component和Bean的区别自定义注解时使用的RetentionPolicy枚举类有哪些值?如何理解Spring的SPI机制?Spr…

听说现在AI产品经理薪资30k起步?0基础可以转行AI产品吗?

2024年,还有什么新风口? AI、元宇宙、NFT… 很多人不知道,其实不管是元宇宙还是NFT,它们本质上就是人工智能领域。 AI自身应用领域非常广泛,大批高薪岗位随之涌了出来,包括AI产品经理。 AI产品经历具体工…

CSS Float(浮动)

CSS Float(浮动) 概述 CSS Float(浮动)是一种布局技术,它允许开发人员将元素(如图片或文本)沿着其容器的左侧或右侧放置,并且让其他内容围绕它流动。这种技术在过去被广泛用于创建多栏布局,尽管现代CSS提供了更多高级的布局方法(如Flexbox和Grid),但理解浮动仍然…

【LeetCode:841. 钥匙和房间 + DFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

安卓手机已删除短信如何恢复?这2个技巧,找回离家出走的短信

手机宛如一座丰富的宝库,珍藏着生活中的点滴回忆。其中,短信作为沟通的桥梁,记录着我们与亲朋好友间的温情脉脉,承载着无数珍贵的瞬间。然而,有时,我们却会不慎触发宝库中的机关,使得这些宝贵的…

陈文自媒体:30岁房贷1000万,杠杠超乎想象!

首先写这个文章我要声明,这个内容没有传播负能量,没有传播所谓的焦虑,我只是想表达一下我的观点。 昨天的中金30岁女士的事件,我相信很多网友都知道了,已经上了热搜了。 简单总结一下原因,据说是她和老公…

【计算智能】遗传算法(二):基本遗传算法在优化问题中的应用【实验】

前言 本系列文章架构概览: 本文将介绍基本遗传算法在解决优化问题中的应用,通过实验展示其基本原理和实现过程:选取一个简单的二次函数作为优化目标,并利用基本遗传算法寻找其在指定范围内的最大值。 2. 基本遗传算法(SGA&#x…

面试公司的时候一般要问HR的问题和关注的福利待遇(比较重要,亲测)

1.问是否双休,是否有五险一金 2.问福利待遇,是否包吃住,是否有班车及补贴等 3.是否加班 4.是否有健身房,食堂等设施 5.是否出差,在哪个城市 6.工作地点能不能选择 7.晋升机会怎么样,什么时候才能晋升&#…

从0构建一款appium-inspector工具

上一篇博客从源码层面解释了appium-inspector工具实现原理,这篇博客将介绍如何从0构建一款简单的类似appium-inspector的工具。如果要实现一款类似appium-inspector的demo工具,大致需要完成如下六个模块内容 启动 Appium 服务器连接到移动设备或模拟器启…

vue 中 使用腾讯地图 (动态引用腾讯地图及使用签名验证)

在设置定位的时候使用 腾讯地图 选择地址 在 mounted中引入腾讯地图: this.website.mapKey 为地图的 key // 异步加载腾讯地图APIconst script document.createElement(script);script.type text/javascript;script.src https://map.qq.com/api/js?v2.exp&…

SS8812T替代DRV8812的国产双通道H桥电机驱动芯片

由工采网代理的SS8812T是一款国产双通道H桥电机驱动芯片;该芯片为打印机和其它电机一体化应用提供一种双通道集成电机驱动方案;可Pin-to-Pin兼容替代DRV8812,可广泛应用于POS、打印机、安防相机、办公自动化设备、游戏机、机器人等。 产品描述…

Vue.js 案例——商品管理

一.需要做出的效果图&#xff1a; 二.实现的步骤 首先&#xff0c;先建一个项目&#xff0c;命名Table&#xff0c;在Table项目中的components里新建一个MyTable.vue文件。 第二步&#xff0c;在原有的 HelloWorld.vue中写入代码。 HelloWorld.vue代码如下&#xff1a; <…

KumiaoQQ机器人框架源码

源码介绍 酷喵机器人框架基于PC协议与MGCH的结合&#xff0c;MGCH即 MiraiGO-CQhttp&#xff08;代码类型&#xff1a;易语言&#xff09;基本的API功能已经实现&#xff0c;具体可自测&#xff08;教程/日志/说明文本已附带&#xff09;开放源码仅供参考学习交流&#xff0c;…

远超美国!中国AI专利数量全球第一!商汤推出面向C端用户大模型“Vimi”,可生成分钟级视频!|AI日报

文章推荐 苹果获得OpenAI董事会观察员职位&#xff01;Runway正筹集新一轮融资&#xff0c;估值40亿美元&#xff01;&#xff5c;AI日报 AI基准测评&#xff08;下&#xff09;&#xff1a;视频生成、代码能力、逻辑推理&#xff0c;AI是否已经超越人类&#xff1f; 联合国…

【linux高级IO(一)】理解五种IO模型

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux高级IO 1. 前言2. 重谈对…

kubernetes dashboard安装

1.查看符合自己版本的kubernetes Dashboard 比如我使用的是1.23.0版本 https://github.com/kubernetes/dashboard/releases?page5 对应版本 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml修改对应的yaml,…

Linux Conda 入门案例教程

Conda 的基本概念 1.什么是 Conda&#xff1f;&#xff1a;Conda 是一个开源的包管理器和环境管理器&#xff0c;用于管理 Python 和其他语言的环境和依赖项。 2.Conda 的特点&#xff1a;Conda 的特点包括快速、可靠、灵活和跨平台支持等。 安装和配置 1.安装 Conda&#x…

adb不插usb线通过wifi调试

说起做手机开发也有好多年了&#xff0c;说来惭愧&#xff0c;我最近才知道安卓手机是可以不插数据线进行开发调试的。起因是公司近期采购了一批安卓一卡通设备&#xff0c;需要对其进行定制开发APP,但是由于我插USB调试发现没有反应。通过询问厂家才知道可以通过WIFI进行调试。…