【八股文】并发编程相关考点

news2025/1/24 22:36:23

1.线程和进程和协程的区别

  • 进程操作系统中资源分配和调度的基本单位,是程序的一次执行过程,因此是动态的,即一个进程从创建到运行再到消亡。每个进程都有独立的内存空间,一位置一个进程的变量修改不会影响到其他经常。进程之间的同学通常需要通过操作系统提供的机制,如管道、消息队列和共享内存等。进程之间切换的开销较大,因为进程之间是完全隔离的,每次切换都需要保存当前进程的上下文并加载新进程的上下文。
  • 线程是一个比进程更小的执行单元,是CPU调度和分派的基本单位。一个进程的过程可以产生多个线程,这些线程共享同一进程的资源,如堆和方法区资源。线程之间的通信和数据共享要比进程间容易得多。线程切换的开销比进程小,因为它们共享相同的内存上下文,但多个线程同时访问共享资源时,需要同步机制来防止数据竞争和不一致的情况,比如使用锁或者信号量。
  • 协程是一个比线程更轻量级的执行单元,它在用户空间内调度和管理。协程的控制权转移由协程自身决定,而不是由操作系统调度器决定。这就意味着协程可以在任何地方暂停和恢复执行,协程之间的切换开销远低于线程。所以协程非常适合用于I/O密集型的任务,因为它们可以在等待I/O操作完成时主动放弃控制权,然后在完成后恢复执行,这样可以避免线程在等待I/O时的阻塞状态,提高系统的并发性能。
进程线程协程
定义操作系统资源分配和调度的基本单位进程内执行单元,CPU 调度和分派的基本单位用户空间内的轻量级执行单元
内存拥有独立的内存空间共享所属进程的内存空间共享所属进程和线程的内存空间
开销创建和切换成本高创建和切换成本较低创建和切换成本基地
通信需要通过进程间进行通信可以直接访问共享数据可以直接访问共享数据
并发能力较低,受限于系统调度和资源限制较高,受限于系统调度和资源限制极高,几乎无限制,受限于系统资源
调度由操作系统调度由操作系统调度由用户空间调度
隔离性最强,完全隔离较弱,共享内存和资源最弱,共享内存和资源
使用场景高隔离需求,多核CPU利用高效资源共享,多任务处理I/O密集型任务,异步编程

2.堆和方法区的区别

堆和方法区都是所有线程共享的资源堆是进程中最大的一块内存,主要存放用户新创建的对象。方法区主要用于存放已被加载的类信息、常量、静态变量等。

3.并发和并行的区别

在多核CPU下

  • 并发:两个及其以上的作业在同一时间段执行
  • 并行:两个及其以上的作业在同一时刻执行

4.同步和异步的区别

同步:发出一个调用后,在没有得到结果之前,会一直等待
异步:发出一个调用后,不用等待结果,该调用直接返回
在项目中,例如注册完成后会给邮箱发一条注册成功的信息,假设注册完成需要50ms,而发一条注册成功的信息到邮箱需要50ms,如果是同步则一共需要50ms,而异步的话,就只需要50ms,因为只需要注册完成就行了,发送信息由消息队列来异步发送。

5.多线程相关问题

  • 为什么使用多线程:为了减少线程上下文切换的开销,现在的系统要求百万甚至千万级并发量,利用多线程机制可以大大提高系统的并发能力和性能。
  • 多线程带来的问题:内存泄漏、死锁、线程不安全(对同一份数据进行访问,是否能够保证数据的正确性和一致性)
  • 单核CPU运行多个线程效率一定会高吗?不会,要看是CPU密集型还是IP密集型,如果是CPU密集型,多个线程同时运行会导致频繁的线程切换,会影响效率,而IO密集型会有很多线程来提高效率。

6.创建线程的方法有哪些?

  • 继承Tread类重写run方法
  • 实现Runnable接口重写run方法
  • 实现Callable接口,重写call方法,通过FutureTask类来传入到Thread中。与Runnable的区别
    • call() 方法有返回值(String类型),而run方法没有
    • call() 方法可以抛异常,而run方法不行
    • callable接口有泛型,而Runnable没有
  • 使用线程池
    在这里插入图片描述
    更新中。。。

参考

黑马程序员面经

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

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

相关文章

大数据HBase图文简介

往期推荐 数据仓库及数仓架构概述-CSDN博客 数仓常见名词解析和名词之间的关系-CSDN博客 引言 要想明白为什么产生 HBase,就需要先了解一下 Hadoop 存在的限制:Hadoop 可以通过 HDFS 来存 储结构化、半结构甚至非结构化的数据,是传统数据库的…

LeetCode 965.单值二叉树 C写法

LeetCode 965.单值二叉树 C写法 思路🧐: 用前序遍历的方式,如果左结点或右结点不为空且值不相等就直接返回false,如果走完一颗子树,结点为空了就返回true到上一层递归,直到左右子树全部走完,全为…

深入理解PreparedStatement

预处理 Overridepublic boolean login(String username, String userpwd) {Connection con DBUtils.getConnection();try {if(con ! null){PreparedStatement pstmt con.prepareStatement("select username,userpwd from " " users where username? and us…

【靶场实操】sql-labs通关详解----第一节:基础注入方式(Less-1~Less-10)

目录 一、注入方式简要概括 1.1 SQL常见注入方式 1.2 爆破函数 二、靶场实操 2.1 Less-1 2.1.1 判断类型 2.1.2 联合注入查询 2.2 Less-2 2.2.1 判断类型 2.2.2 注入攻击 2.2.3 字符型与数字型漏洞对比 2.3 Less-3 2.3.1 判断 2.3.2 注入 2.4 Less-4 2.4.1 判断…

论文阅读-《Cross-Sentence N-ary Relation Extraction with Graph LSTMs》

这篇论文提出了一种基于图LSTM的跨句子n元关系提取框架,具有很好的创新性。图LSTM能够有效地处理长距离依赖和跨句信息,并且能够方便地整合丰富的语言分析。此外,论文还探索了多任务学习,将n元关系与其子关系进行联合学习&#xf…

WebFlux集成MongoDB

目录 前言 1.简单集成MongoDB 2. yml配置 3.创建用户实体类 4.创建用户CRUD数据访问接口类 5.Controller层 6.postman测试访问 7.代码附在本博文绑定资源 前言 MongoDB广泛应用于非关系型数据库的存储,其主要存储的数据类型有字符串,整数、浮点数…

NAS 软件大盘点:瞧瞧哪个被你遗漏了

很多人都听说过NAS,也有很多人正在使用NAS,而NAS用户通常需要安装一些软件来扩展其功能,毕竟NAS的功能实在是太多了,光是部署与调试就要耗费大量的时间, 小宝集合了NAS相关实用工具,无论是群晖、威联通还是…

3、从0搭建企业门户网站——JDK下载、安装与环境变量配置

目录 ​编辑 正文 1、JDK下载 2、JDK安装 2.1 建立存放目录 2.2 上传文件 2.3 解压 3、JDK环境变量配置 4、检查JDK版本 正文 在CentOs7.5上,安装JDK是必要的,因为我们的网站软件是Java语言开发。下面我们以安装JDK 17为例,介绍整个JDK安装过程。 1、JDK下载 JDK…

Vitis通过TCF远程调试ZYNQ Linux

昨天已经在矿渣板上把petalinux跑起来了,今天准备尝试一下vitis通过TCF远程调试ZYNQ Linux代码,官方和第三方的各种教程满天飞,但还是有几个坑的,教程没说清楚。 1.打开vitis,用vivado导出的xsa文件新建一个platform工…

ChinaJoy 2024,VERYCLOUD睿鸿股份与你相聚

🎮2024 ChinaJoy于26日正式开幕 🕗7月26-28日 🌐VERYCLOUD睿鸿股份在BTOB商务洽谈馆 🌟W4-B785展位 🎇展台交流好礼相送 与多行业好友现场相聚、畅谈🧐 现场游戏企业云集 专业观众、玩家纷至沓来 与游戏/短…

新一代分割一切大模型SAM2(Segment Anything Model 2)介绍,可轻松分割图片与视频

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

KylinOS V10系统上安装yashan数据库单机版

一、服务器准备 这里安装的KylinOS V10桌面版本。 二、依赖项准备 安装桌面版的依赖包都安装好了。 https://doc.yashandb.com/yashandb/23.2/zh/%E5%AE%89%E8%A3%85%E5%92%8C%E5%8D%87%E7%BA%A7/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/%E5%AE%89%E8%A3%85%E5%89%8D%E5%87%86…

net start mysql; 服务名无效。 请键入 NET HELPMSG 2185 以获得更多的帮助。 也许你只是写错了名字!!!!!

看样子不知道问题出在哪里,看了别人的文章也不行。 打开服务(命令行输入services.msc)!! 人家叫mysql80 成了~ 就很无语

创邻科技Galaxybase银河图数据库赋能供应链高效协同

随着全球环境从乌卡时代走向巴尼时代,供应链管理能力与水平决定了企业的存生与盈利水平。数据是体现供应链运营状态与价值的核心要素,借助最新的数据处理技术最大限度挖掘数据价值,实现供应链可预测、可追溯、可实时响应,提升供应…

外卖项目day11---用户下单

OrderController代码 RestController("userOrderController") RequestMapping("/user/order") Api(tags "用户端订单相关接口") Slf4j public class OrderController {Autowiredprivate OrderService orderService;/*** 用户下单* param orders…

华硕电脑怎么录屏?3个高效实用的方法

华硕电脑作为一款备受青睐的电脑品牌,拥有丰富的功能和工具,其中包括强大的录屏功能。然而,对于许多华硕电脑用户来说,如何利用这一功能可能会感到困惑。 本文将带您探索华硕电脑的录屏功能,为您揭示华硕电脑怎么录屏…

算法小白的进阶之路(力扣1~5)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

Vue3-Vite-TypeScript:屏幕适配rem

① 基于rem 适配(推荐,也是本篇要实现的方案) 适用场景:不固定宽高比的Web应用,适用于绝大部分业务场景 ② 基于 scale 适配 适用场景:固定宽高比的Web应用,如大屏或者固定窗口业务应用 个人…

使用 openai 和 langchain 调用自定义工具完成提问需求

我们提供了一个函数,接受传入运算的字符串,返回运算的结果。 现在的需求是,我们问 gpt 模型,由于模型计算能力并不好,他要调用计算函数,根据计算结果,回答我们的问题。 使用 openai 实现&#…

资源|Python入门必看书籍,适合零基础小白,附PDF

小编为初学Python的朋友们汇总了7本零基础入门书籍,包括Python三剑客等,都是在编程届多年畅销的书籍,也是众多从业者的选择,全文详细介绍了书籍主要内容,有需要的宝子根据自身情况自取 需要书籍PDF的宝子评论区留言哦 …