总结:进程和线程的联系和区别

前言:通过学习javaEE初阶中的多线程章节后加上我自己的理解,想来总结一下线程和进程的联系和区别.

一来是能更好地复习知识,二来是为了记录我的学习路程,相信未来的我回首不会忘记这段难忘的经历.

1.进程

先来谈谈进程:进程是操作系统中资源分配的基本单位.

1)进程的执行方式有两种:并行和并发,二者同时存在

2)进程的状态最关键的两个:就绪状态和阻塞状态.

    就绪状态:进程随时可调度到CPU上执行

   阻塞状态:进程暂时无法调度到CPU上执行

2.线程:

再谈线程:线程是操作系统调度执行的基本单位.

3.进程和线程的联系:

3.1线程也叫"轻量级进程"

  1. 进程是线程的容器:一个进程至少含 1 个主线程,可创建多个子线程。
  2. 共享资源:同一进程内的线程共享内存、文件句柄等资源,通信成本低。
  3. 协同工作:进程通过多线程实现内部并行(如浏览器用不同线程渲染和加载网络)。

4.进程和线程的区别:

  

维度进程线程
定义操作系统分配资源的基本单位进程内的执行单元,CPU 调度基本单位
资源分配独立地址空间、文件句柄等共享进程资源,仅独立栈和寄存器
切换开销高(涉及内存管理等大量资源)低(仅少量寄存器和栈数据)
独立性进程间隔离,崩溃不影响其他进程共享资源,线程崩溃可能导致进程崩溃
适用场景强隔离任务(如独立程序运行)同程序内协作任务(如多任务处理)

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

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

相关文章

边缘云的定义、实现与典型应用场景!与传统云计算的区别!

一、什么是边缘云?‌ 边缘云是一种‌分布式云计算架构‌,将计算、存储和网络资源部署在‌靠近数据源或终端用户的网络边缘侧‌(如基站、本地数据中心或终端设备附近),而非传统的集中式云端数据中心。 ‌核心特征‌&…

海康威视摄像头C#开发指南:从SDK对接到安全增强与高并发优化

一、海康威视SDK核心对接流程​​ 1. ​​开发环境准备​​ ​​官方SDK获取​​:从海康开放平台下载最新版SDK(如HCNetSDK.dll、PlayCtrl.dll)。​​依赖项安装​​:确保C运行库(如vcredist_x86.exe)与S…

《软件工程》第 9 章 - 软件详细设计

目录 9.1 详细设计的任务与过程模型 9.2 用例设计 9.2.1 设计用例实现方案 9.2.2 构造设计类图 9.2.3 整合并优化用例实现方案 9.3 子系统设计 9.3.1 确立内部设计元素 9.3.2 导出设计类图 9.4 构件设计 9.5 类设计 9.5.1 精化类间关系 9.5.2 精化属性和操作 9.5.…

spring+tomcat 用户每次发请求,tomcat 站在线程的角度是如何处理用户请求的,spinrg的bean 是共享的吗

对于 springtomcat 用户每次发请求,tomcat 站在线程的角度是如何处理的 比如 bio nio apr 等情况 tomcat 配置文件中 maxThreads 的数量是相对于谁来说的? 以及 spring Controller 中的全局变量:各种bean 对于线程来说是共享的吗? 一、Tomca…

存储引擎系列--LSM不同Compaction策略性能分析对比

本文介绍一下参考论文里的Compaction性能分析部分,作者在RocksDB的基础上做了多种策略的改造,然后提出了benchmarking方法论,关注compaction性能的哪些维度,并对结果进行分析。 一、Standardization of Compaction Strategies 1.1 实验平台的选择 作者选择了RocksDB作为…

leetcode 3559. Number of Ways to Assign Edge Weights II

leetcode 3559. Number of Ways to Assign Edge Weights II 1. 解题思路2. 代码实现 题目链接:3559. Number of Ways to Assign Edge Weights II 1. 解题思路 这一题是题目3558. Number of Ways to Assign Edge Weights I的进阶版本。 对于题目3558来说&#xf…

推理模型 vs 非推理模型:核心区别及优劣势解析

推理能力上的差异 推理模型在推理能力方面表现突出,它们擅长通过生成中间步骤和“思维链”逐步解决复杂问题。这意味着面对数学计算、逻辑推理、多跳推断等任务时,推理模型能够将问题分解为若干子步骤,每一步给出推理结果,最终汇总得到答案。这种逐步推导的方式使得推理模…

OPENEULER搭建私有云存储服务器

一、关闭防火墙和selinux 二、下载相关软件 下载nginx,mariadb、php、nextcloud 下载nextcloud: sudo wget https://download.nextcloud.com/server/releases/nextcloud-30.0.1.zip sudo unzip nextcloud-30.0.1.zip -d /var/www/html/ sudo chown -R…

Docker 与微服务架构:从单体应用到容器化微服务的迁移实践

随着软件系统规模和复杂性的日益增长,传统的单体应用(Monolithic Application)在开发效率、部署灵活性和可伸缩性方面逐渐暴露出局限性。微服务架构(Microservice Architecture)作为一种将大型应用拆分为一系列小型、独立、松耦合服务的模式,正成为现代企业构建弹性、敏捷…

【C#】Invalidate()的使用

Invalidate()的使用 Invalidate() 是 C# 中用于通知控件需要重新绘制的方法。它通常用于 Windows Forms 应用程序中,当想要更新控件的显示内容时使用。调用 Invalidate() 方法后,系统会安排对该控件进行重绘,这将导致后续调用 OnPaint 方法&…

我店模式系统开发打造本地生活生态商圈

在当今快节奏的商业环境中,商家们面临着越来越多的挑战,包括市场竞争加剧、消费者需求多样化以及运营效率的提高等。为了应对这些挑战,越来越多的商家开始寻求信息化解决方案,以提升运营效率和客户体验。我的店模式系统平台应运而…

Linux(Ubuntu)新建文件权限继承问题

当你在一个工作目权限为777的文件下,新建一个文件的时候,就有可能发生,新建的这个文件,权限和其他文件,或者工作目录不一致的问题,我们不可能每次新建一个文件,就要 sudo chmod -R 777 /PATH 所…

Vue3和React中插件化设计思想

Vue 3 和 React 都广泛支持插件化设计思想,但因为它们的架构和理念不同,插件化的实现方式也不尽相同。以下分别详细讲解这两者中如何实现插件化: 🟩 一、Vue 3 中的插件化实现 Vue 3 继承了 Vue 2 的插件机制,同时增强…

Excel 密码忘记了?巧用PassFab for Excel 解密帮您找回数据!

在工作中,你是否遇到过这样的尴尬时刻?打开重要的 Excel 文件,却发现忘记密码,里面的财务报表、客户数据、项目计划瞬间变成 “加密天书”。重新制作耗时耗力,找专业人员解密又担心数据泄露,这个时候&#…

Vue3 与 Vue2 区别

一、Vue3 与 Vue2 区别 对于生命周期来说,整体上变化不大,只是大部分生命周期钩子名称上 “on”,功能上是类似的。不过有一点需要注意,组合式API的Vue3 中使用生命周期钩子时需要先引入,而 Vue2 在选项API中可以直接…

Axure高级交互设计:中继器嵌套动态面板实现超强体验感台账

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:中继器嵌套动态面板 主要内容:中继器内部嵌套动态面板,实现可移动式台账,增强数据表现…

Spring中用到的设计模式详解

Spring 在设计和实现过程中大量使用了设计模式,这些设计模式不仅提升了 Spring 的灵活性和可扩展性,还为开发者提供了更高效、更优雅的编程方式。以下是 Spring 框架中使用的一些常见设计模式: 1. 单例模式(Singleton Pattern&am…

Typescript学习教程,从入门到精通,TypeScript 集合类型语法知识点及案例代码(11)

TypeScript 集合类型语法知识点及案例代码 TypeScript 提供了多种集合类型,用于存储和管理数据。以下将详细介绍 数组(Array)、元组(Tuple)、集合(Set) 和 映射(Map)&am…

在 Win 10 上,Tcl/Tk 脚本2个示例

参阅:Tcl/Tk 教程 set PATH 新增 D:\Git\mingw64\bin where tclsh D:\Git\mingw64\bin\tclsh.exe where wish D:\Git\mingw64\bin\wish.exe 编写 test_tk.tcl 如下 #!/usr/bin/tclsh # test 文件对话框 package require Tk# 弹出文件选择对话框,限…

Qt环境的搭建

Qt安装 Qt开发环境需要安装三个部分 1.C编译器(不是vs) 2.Qt SDK 3.需要一个Qt的集成开发环境 说是需要三个部分,但实际上是需要安装Qt SDK就足够了 QtSDK可以直接去官网下载 下载完成后需要配置一下环境变量 可以直接在系统中搜索"编辑系统环境变量" 为什么要…