【多线程面试题二十二】、 说说你对读写锁的了解

news2025/1/21 18:37:32

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

面试官:说说你对读写锁的了解

参考答案:

与传统锁不同的是读写锁的规则是可以共享读,但只能一个写,总结起来为:读读不互斥、读写互斥、写写互斥,而一般的独占锁是:读读互斥、读写互斥、写写互斥,而场景中往往读远远大于写,读写锁就是为了这种优化而创建出来的一种机制。 注意是读远远大于写,一般情况下独占锁的效率低来源于高并发下对临界区的激烈竞争导致线程上下文切换。因此当并发不是很高的情况下,读写锁由于需要额外维护读锁的状态,可能还不如独占锁的效率高。因此需要根据实际情况选择使用。

在Java中ReadWriteLock的主要实现为ReentrantReadWriteLock,其提供了以下特性:

  • 1、公平性选择:支持公平与非公平(默认)的锁获取方式,吞吐量非公平优先于公平。

  • 2、可重入:读线程获取读锁之后可以再次获取读锁,写线程获取写锁之后可以再次获取写锁。

  • 3、可降级:写线程获取写锁之后,其还可以再次获取读锁,然后释放掉写锁,那么此时该线程是读锁状态,也就是降级操作。

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

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

相关文章

windows server 2016调优

1. 增加TCP连接的最大数量: 在您当前的注册表路径(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters)中的右侧窗格,右击空白处,选择“新建” -> “DWORD (32位) 值”。为新的值命名为TcpNu…

Python:PDF转长图像和分页图像

简介:随着电子化文档的普及,PDF文件的使用频率越来越高。有时我们需要将PDF中的内容转化为图片格式进行分享或编辑,那么如何才能轻松地完成此任务呢?本文将为你展示一个Python工具:如何将PDF文件转化为图片&#xff0c…

Macroscope安全漏洞检测工具简介

学习目标: 本介绍旨在帮助感兴趣者尽快了解 Macroscope,这是一款用于安全测试自动化和漏洞管理的企业工具。 全覆盖应用程序安全测试: 如下图所示,如果使用多种互补工具(SAST/DAST/SCA 等)来检测应用程序…

redis的两种持久化的方式 RDB AOF

1. RDB持久化 就是将某个时间点的数据快照,全部保存在磁盘的二进制文件中。 可以选择命令手动触发: save命令,阻塞式保存快照数据,会阻塞其它操作 bgsave,开启子线程执行RDB 或者配置文件配置自动触发: 在r…

C#中只能在.NetFramework下使用LINQtoSQL不要在.net 下使用

目录 一、在net7.0下无法实现LINQtoSQL 1.VS上建立数据库连接 2.VS上创建LINQtoSQL 二、在.NetFramework4.8下成功实现LINQtoSQL 1.VS上建立数据库连接 2.VS上创建LINQtoSQL 三、结论 四、理由 本文是个人观点,因为我百般努力在.net7.0下无法实现LINQtoSQL的…

走近Python爬虫(二):常见反爬虫机制的应对措施

文章目录 一、应对—异步加载1.一般措施2.Selenium 二、应对—登录验证1.使用Selenium模拟登录2.使用Cookies登录3.使用Session模拟表单登录 三、应对—验证码 本文是Python爬虫系列博客的第二篇,内容概览如下: 一、应对—异步加载 1.一般措施 AJAX技术…

【操作系统】Cygwin和MinGW的区别与联系是怎样的?

Cygwin和MinGW的区别与联系是怎样的? CygwinMinGW两者的区别和联系参考资料 Cygwin和MinGW都是为Windows系统开发者设计的工具。 Cygwin Cygwin, 原Cygnus出品,目前是RedHat名下的项目。项目的目的是提供运行于Windows平台的类Unix环境&…

Linux - 浅析守护进程的概念

Linux下的守护进程是在后台运行的特殊进程,它不与任何终端关联,通常在系统启动时自动启动,运行在后台并且不受用户登录或注销的影响。Linux 下的守护进程通常是以系统管理员的权限运行,用来执行一些系统任务,例如监控硬…

MATLAB R2023b(编程和数学计算软件)

MATLAB R2023b是一款最新版本的编程和数学计算软件,它包含了大量用于算法开发、数据可视化、数据分析、数据模拟以及交互式环境的功能,使得用户能够更加方便灵活地进行科学研究或者工程应用。 MATLAB R2023b相较于之前的版本,增加了一些新的…

同城售后系统退款业务重构心得 | 京东云技术团队

一、重构背景 1.1、退款 到家、小时购、天选退款有2套结构,代码逻辑混乱; 其中小时购、天选部分售后单是和平生pop交互退款,部分是和售后中台交互退款;并且兼容3套逻辑; 痛点:代码繁重,缺乏…

猫头虎博主:Python数据分析,你掌握了吗?

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

自动驾驶的同学看过来:DriveLM:世界首个语言+自动驾驶全栈开源数据集

DriveLM:世界首个语言自动驾驶全栈开源数据集,旨在借助大语言模型和海量自然语言数据集,构筑复杂场景下安全、精准、可解释的自动驾驶系统,突破现有自动驾驶推理能力上限,数据集已开源! DriveLM提供了量化…

多叉树OJ思路 ,无代码

也是第一次写森林树,确实不是很拿捏,受二叉树的影响太多了;你会发现这个多叉树一般不建链式结构的,都是数组式的比如“双亲表示法”,让子节点可以找到父节点这样。 有疑问欢迎交流,作者我也是蒟蒻&#xff…

精进·第2篇:分享一个3-5年战略规划框架思路

首发:麦子禾咨询 作者:石头 前几天,石头分享过一个简单的战略规划框架思路,本篇,石头打算再分享一个相对复杂的3-5年战略规划框架思路。 每种战略规划框架思路,都有其局限性,有些受限于行业属…

MySQL 外连接和内连接的查询优化怎么做?

目录 1. 表连接方式的分类和需要注意的细节 2. 表连接时底层做了什么事? 3. 左外连接优化方案 4. 内连接优化方案 1. 表连接方式的分类和需要注意的细节 多表连接查询,大体上可以分为内连接与外连接。 内连接的意思就是把两个表有关联的部分都取出…

二叉树进阶 - (C++二叉搜索树的实现)

二叉树进阶 - (二叉搜索树的实现) 二叉搜索树1. 二叉搜索树概念2. 二叉搜索树操作2.1 二叉搜索树的查找2.2 二叉搜索树的插入2.3 二叉搜索树的删除(重点) 3. 二叉搜索树的(代码)实现 二叉搜索树 1. 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0…

MySQL是如何优化in子查询的?

目录 前言 一、普通in子查询 二、物化表 三、SQL优化 四、IN语句的优化方式 1. 使用子查询代替IN查询 2. 使用JOIN代替IN查询 3. 使用EXISTS代替IN查询 4. 使用索引优化IN查询 5. 优化查询语句 总结 前言 对于很多的开发小伙伴来说,在MySQL中进行in子查…

Antlr4学习笔记

目录 背景 相关概念 流程说明 入门示例 简易计算器 环境准备 开发 java8方法提取 语法规则 常用的语法要点 设计语法 序列模式 选择模式 词法符号依赖 嵌套模式 总结 参考资料 背景 在阅读shardingjdbc-4.1.1代码时,发现一段sql解析的逻辑&#x…

极智开发 | H100服务器的庐山真面目

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文分享一下 H100服务器的庐山真面目。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq H100 是英伟达最强显卡,当然其实也…

stable-diffusion 电商领域prompt测评集合

和GhostReivew一个思路,还是从比较好的图片或者是civitai上找一些热门的prompt,从小红书上也找到了不少的prompt,lexica.art上也有不少,主要是为了电商场景的一些测评: 小红书、civitai、Lexica、Liblib.ai、 depth o…