juc系列(1)---进程,线程,并行,并发

news2024/11/13 8:56:46

目录

  • 概述
    • 进程
    • 线程
    • 关系
    • 并发并行:
    • 同步异步:
    • 对比

概述

进程

程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内
存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的

当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程

进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器
等),也有的程序只能启动一个实例进程(例如网易云音乐、360安全卫士等)

进程:程序是静止的,程序实体的运行过程就是进程,是系统进行资源分配的基本单位

进程的特征:并发性、异步性、动态性、独立性、结构性

线程

线程是属于进程的,是一个基本的 CPU 执行单元,是程序执行流的最小单元。
线程是进程中的一个实体,是系统独立调度的基本单位,线程本身不拥有系统资源,只拥有一点在运行中必不可少的资源,与同属一个进程的其他线程共享进程所拥有的全部资源

关系

一个进程可以包含多个线程,这就是多线程,比如看视频是进程,图画、声音、广告等就是多个线程

线程的作用:使多道程序更好的并发执行,提高资源利用率和系统吞吐量,增强操作系统的并发性能

单个cpu下的 单位时间内多个线程交替执行,但某个时刻只能有一个线程在运行
单个cpu的并发多线程
多个cpu的并行(单位时间内以及某个时刻都是多个线程同时进行)
多个cpu的并行

并发并行:

  • 并行:在同一时刻,有多个指令在多个 CPU 上同时执行
  • 并发:在同一时刻,有多个指令在单个 CPU 上交替执行

同步异步:

  • 需要等待结果返回,才能继续运行就是同步
  • 不需要等待结果返回,就能继续运行就是异步

对比

线程进程对比:

  • 进程基本上相互独立的,而线程存在于进程内,是进程的一个子集

  • 进程拥有共享的资源,如内存空间等,供其内部的线程共享

  • 进程间通信较为复杂

    同一台计算机的进程通信称为 IPC(Inter-process communication)

    • 信号量:信号量是一个计数器,用于多进程对共享数据的访问,解决同步相关的问题并避免竞争条件
    • 共享存储:多个进程可以访问同一块内存空间,需要使用信号量用来同步对共享存储的访问
    • 管道通信:管道是用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件 pipe 文件,该文件同一时间只允许一个进程访问,所以只支持半双工通信
      • 匿名管道(Pipes):用于具有亲缘关系的父子进程间或者兄弟进程之间的通信
      • 命名管道(Names Pipes):以磁盘文件的方式存在,可以实现本机任意两个进程通信,遵循 FIFO
    • 消息队列:内核中存储消息的链表,由消息队列标识符标识,能在不同进程之间提供全双工通信,对比管道:
      • 匿名管道存在于内存中的文件;命名管道存在于实际的磁盘介质或者文件系统;消息队列存放在内核中,只有在内核重启(操作系统重启)或者显示地删除一个消息队列时,该消息队列才被真正删除
      • 读进程可以根据消息类型有选择地接收消息,而不像 FIFO 那样只能默认地接收

    不同计算机之间的进程通信,需要通过网络,并遵守共同的协议,例如 HTTP

    • 套接字:与其它通信机制不同的是,可用于不同机器间的互相通信
  • 线程通信相对简单,因为线程之间共享进程内的内存,一个例子是多个线程可以访问同一个共享变量

    Java 中的通信机制:volatile、等待/通知机制、join 方式、InheritableThreadLocal、MappedByteBuffer

  • 线程更轻量,线程上下文切换成本一般上要比进程上下文切换低


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

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

相关文章

Databend 内幕大揭秘第一弹 - minibend 简介

minibend ,一个从零开始、使用 Rust 构建的查询引擎。这里是 minibend 系列技术主题分享的第一期,来自 PsiACE 。 前排指路视频和 PPT 地址 视频(哔哩哔哩):https://www.bilibili.com/video/BV1Ne4y1x7Cn PPT&#x…

Unity 之 Addressable可寻址系统 -- 资源加载和释放

可寻址系统资源 -- 加载和资源释放 -- 进阶(二)一,资源加载1.1 同步异步对比1.2 三种加载模式二,释放资源2.1 基础概念2.2 实例演示2.2.1 示例演示一2.2.2 示例演示二2.3 注意事项概述:本篇文章从资源加载的方式和具体…

Spring官方提供【CSRF攻击】解决方案

步入正文 Cookie cookie是我们常见用来保存用户态信息,cookie跟随我们的请求自动携带。在同一域名下的请求,cookie总是自动携带。 用户态: 当前登入者的用户信息 以上的特性会导致一个潜在漏洞-CSRF CSRF CSRF一般指跨站请求伪造。 跨站请求伪造&…

长安链合约标准协议启动建设,邀请社区用户评审

智能合约是区块链摆脱第三方,实现验证、执行业务逻辑的“看不见的手”。随着联盟链产业落地进入快车道,需要面对的应用场景更加多样,智能合约标准协议作为推动联盟链应用生态繁荣的重要一环也需要加速推进发展。 区块链技术正在发展中规范。…

PHP 连接 MySQL

PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved)PDO (PHP Data Objects) 在 PHP 早期版本中我们使用 MySQL 扩展。但该扩展在 2012 年开始不建议使用。 我是该用 MySQLi ,还是 PDO? 如果你需要一个简短的回答&…

C语言 栈的应用 计算简单的中缀表达式

代码简介:下面的代码实现了计算简单的中缀表达式:只可以处理一位正整数的四则运算及括号。是栈的简单应用,要实现中缀表达式运算需要用两个栈,一个存储数字的栈和一个存储运算符的栈,因为懒得写两遍不同的栈上的操作&a…

增益自适应PI控制器+死区过滤器(Smart PLC向导PID编程应用)

增益自适应和死区过滤器如果不和S7-200 SMART PLC PID向导组合实现,大家可以自行编写优化的PID指令。算法起始非常简单,具体实现过程大家可以参看下面的文章链接, 三菱增量式PID+死区过滤器 三菱PLC增量式PID算法FB(带死区设置和外部复位控制)_RXXW_Dor的博客-CSDN博客关于…

【论文简述】High-Resolution Optical Flow from 1D Attention and Correlation(ICCV 2021)

一、论文简述 1. 第一作者:Haofei Xu 2. 发表年份:2021 3. 发表期刊:ICCV 4. 关键词:光流、代价体、自注意力、高分辨率、GRU 5. 探索动机:小分辨率对于网络性能有影响,并且现实场景中大多为高分辨率的…

Minecraft 1.19.2 Fabric模组开发 04.动画效果方块

我们本次尝试在1.19 Fabric中制作一个具有动画效果的方块 效果演示效果演示效果演示 首先,请确保你的开发包中引入了geckolib依赖,相关教程请参考:Minecraft 1.19.2 Fabric模组开发 03.动画生物实体 1.首先我们要使用geckolib制作一个物品和对应的动画…

eCharts工具类

ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。 ECharts官方地址…

【数据结构与算法】顺序表的原理及实现

1.什么是顺序表 顺序表是用一段物理地址连续的存储单元进行存储元素的线性结构,通常是以数组进行存储。通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。 2.顺序表的实现 判断顺序表是否为空表public boolean isEmpty()判断顺序表是否满publi…

excel功能小技巧:自动求和的注意事项

在EXCEL里有个非常方便的按钮,叫做自动求和。不需要输入公式,直接一点,即可得出求和结果。由于它操作上的便利,所以深受小白喜爱。不过看着简单的自动求和按钮,实际上却藏着不少暗坑,稍不留神,可…

juc系列(2)--线程的使用及原理

目录线程创建线程ThreadRunnableCallable线程方法APIrun startsleep yieldjoininterrupt打断线程打断 park终止模式daemon不推荐线程原理运行机制线程调度未来优化线程状态查看线程线程 创建线程 Thread Thread 创建线程方式:创建线程类,匿名内部类方…

R-P-Faster R-CNN day65 读论文:高分辨率遥感影像综合地理空间目标检测框架

An Efficient and Robust Integrated Geospatial Object Detection Framework for High Spatial Resolution Remote Sensing Imagery 1. Introduction3. Overview of the Proposed R-P-Faster R-CNN Framework3.1. 有效集成区域建议网络与目标检测Faster R-CNN框架3.1.2. RPN与…

java反射在spring ioc和aop中的应用

java反射在spring ioc和aop中的应用 反射: 1.反射是什么? 程序运行时,通过类名能够获得类的属性和方法。使用方式如下 Class clazz Class.ForName(“Student”)Class clazz Student.class;Class clazz student.getClass(); 获取到claz…

java JUC 中 Object里wait()、notify() 实现原理及实战讲解

1.Object中的wait()实现原理 在进行wait()之前,就代表着需要争夺Synchorized,而Synchronized代码块通过javap生成的字节码中包含monitorenter和monitorexit两个指令。 当在进加锁的时候会执行monitorenter指令,执行该指令可以获取对象的mon…

前端与HTML

本节课程围绕“前端要解决的基本问题”及“什么是 HTML ”两个基本问题展开,了解 HTML 高效的编写原则。 什么是前端 使用web技术栈解决多端的人机交互问题 技术栈 html(内容) css (样式)javascript (行…

linux部署KubeSphere和k8s集群

上一篇文章讲述了在单个节点上安装 KubeSphere和k8s,这节主要讲解k8s多节点集群部署 准备环境:Alibaba Cloud Linux系统3台机器第一步:设置主机名称hostname--(3台机器都设置) hostnamectl set-hostname master hostnamectl set-hostname nod…

智云通CRM:为什么你总是在请客,但业绩却上不来?

王总是一位企业老板,社会资源比较好,在过去的一年里,他新代理的一个保健品的项目,需要销售产品和招募合伙人。他想利用自己的人脉资源做销售,但他的销售过程并不顺利,在连续主动邀约之后效果不佳。 于是他…

2023/1/15 JS-变量提升与函数提升 执行上下文

1 变量提升与函数提升 变量声明提升 通过 var 声明的变量&#xff0c;在声明语句之前就可以访问到 - 值: undefined <script>console.log(a); // undefinedvar a 10 </script>函数声明提升 通过 function 声明的函数, 在声明语句之前就可以直接调用 - 值: 函数…