面试官:说说synchronized与ReentrantLock的区别


程序员的公众号:源1024获取更多资料,无加密无套路!

最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上


  • 适用范围:Synchronized 只适用于在单个 JVM 实例中的多线程同步,而 ReentrantLock 可以跨越多个 JVM 实例,甚至可以在分布式环境下进行线程同步。

  • 可见性:使用 Synchronized 时,被锁定的代码块或方法中所做的修改会立即对其他线程可见。但是,使用 ReentrantLock 时,需要调用 unlock() 方法来释放锁,才能保证其他线程能够看到修改。

  • 用法不同:synchronized 可以用于修饰普通方法、静态方法以及代码块,而 ReentrantLock 仅适用于代码块。

  • 获取锁和释放锁方式:Synchronized 是隐式锁,可以自动加锁和释放锁,当进入 synchronized 修饰的代码块之后会自动加锁,当离开 synchronized 的代码段之后会自动释放锁。ReentrantLock 是显式锁,需要手动加锁和释放锁, 在使用之前需要先创建 ReentrantLock 对象,然后使用 lock 方法进行加锁,使用完之后再调用 unlock 方法释放锁。

  • 锁类型:默认情况下,synchronized 是非公平锁,而 ReentrantLock 也是非公平锁,但可以手动将 ReentrantLock 配置为公平锁,允许线程按照它们请求锁的顺序获取锁。

  • 中断响应: synchronized 无法直接响应中断,可能导致线程在锁上无限期地等待。ReentrantLock 具有响应中断的能力,可以在等待锁的过程中响应线程的中断请求,从而避免潜在的死锁情况。

 系列文章索引

MyBatis的插件能在哪些地方进行拦截?

了解MyBatis的缓存机制吗

面试官:谈谈对volatile的理解

Spring中用到了哪些设计模式

面试官:说一下SQL的执行过程

线程池的工作原理


 

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

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

相关文章

质量小议35 -- SQL注入

已经记不得上次用到SQL注入是什么时候了,一些概念和操作已经模糊。 最近与人聊起SQL注入,重新翻阅,暂记于此。 重点:敏感信息、权限过大、未脱敏的输入/输出、协议、框架、数据包、明文、安全意识 SQL - Structured Query La…

力扣124. 二叉树中的最大路径和(java DFS解法)

Problem: 124. 二叉树中的最大路径和 文章目录 题目描述思路解题方法复杂度Code 题目描述 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经…

【C++】类和对象——const修饰成员函数和取地址操作符重载

在上篇博客中,我们已经对于日期类有了较为全面的实现,但是,还有一个问题,比如说,我给一个const修饰的日期类的对象 这个对象是不能调用我们上篇博客写的函数的,因为&d1是const Date*类型的&#xff…

备战春招——12.04 算法

哈希表 哈希表主要是使用 map、unordered_map、set、unorerdered_set、multi_,完成映射操作,主要是相应的函数。map和set是有序的,使用的是树的形式,unordered_map和unordered_set使用的是散列比表的,无序。 相应函数…

【Java】类和对象之超级详细的总结!!!

文章目录 前言1. 什么是面向对象?1.2面向过程和面向对象 2.类的定义和使用2.1什么是类?2.2类的定义格式2.3类的实例化2.3.1什么是实例化2.3.2类和对象的说明 3.this引用3.1为什么会有this3.2this的含义与性质3.3this的特性 4.构造方法4.1构造方法的概念4…

【VRTK】【VR开发】【Unity】10-连续移动

课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概述】 连续移动与瞬移有如下不同: 连续移动不容易打断沉浸对于新手或者不适应者来说更容易晕动 我对玩家的建议:连续移动前后左右可以用摇杆,转向用自己…

低代码如何降低门槛、快速交付、实现可持续IT架构?

目录 低代码开发模式期望达成的目标 1.降低开发门槛 2.加快系统交付 3.建立可持续发展的IT架构 写在最后 低代码的概念,最早提出的时间是在2014年左右,随后一直处于上升期,随着前两年阿里、腾讯的相继入场,竞争逐步加大。低代…

设计简单高效的短链系统

目录 引言 1. 短链系统的原理 1.1 长链接生成短码 1.2 短码映射到长链接 1.3 短码重定向 1.4 过期短 URL 清理 2. 设计与实现 2.1 数据存储 2.2 短码生成 2.3 接口设计 2.4 安全性考虑 2.5 访问性能优化 引言 在当今数字化时代,人们对信息的分享需求不断…

市场缺口投资者应该怎么做? 昂首资本一招就能盈利

当在市场交易分析中,投资者发现市场缺口或者价格缺口的时候, 昂首资本问各位投资者应该怎么才能抓住机会盈利一波。 其实在技术分析中的这个术语指的是:前一根棒线的收盘价和下一根棒线的开盘价之间有差距的情况。例如,当做市商将…

【SpringBoot系列】SpringBoot时间字段格式化

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Allegro无法模块复用的解决办法

Allegro无法模块复用的解决办法 在用Allegro做PCB设计的时候,模块复用是使用的比较频繁的功能,对于有相同模块的单板,可以节省大量的时间。 模块复用的功能不细说,具体参考以前的文章。 有时会遇到模块复用的时候出现如下报错 无法匹配,有时如果因为Device而无法复用,就…

python提取通话记录中的时间信息

您需要安装适合中文的SpaCy模型。您可以通过运行 pip install spacypython -m spacy download zh_core_web_sm来安装和下载所需的模型。 import spacy# 加载中文模型 nlp spacy.load(zh_core_web_sm)# 示例电话记录文本 text """ Agent: 今天我们解决一下这…

Linux CentOS7 安装Docker

CentOS7安装Docker: Docker简介 Docker是一个开源的容器化平台,可帮助开发者轻松地创建、部署和运行应用程序。Docker使开发人员能够在一个独立的容器中打包应用程序及其依赖项,这样他们就可以轻松地将应用程序移植到任何其他环境中。Docke…

基础堆溢出原理与DWORD SHOOT实现

堆介绍 堆的数据结构与管理策略 程序员在使用堆时只需要做三件事情:申请一定大小的内存,使用内存,释放内存。 对于堆管理系统来说,响应程序的内存使用申请就意味着要在"杂乱"的堆区中"辨别"出哪些内存是正在…

Python实现交易策略评价指标-夏普比率

1.夏普比率的定义 在投资的过程中,仅关注策略的收益率是不够的,同时还需要关注承受的风险,也就是收益风险比。 夏普比率正是这样一个指标,它表示承担单位的风险会产生多少超额收益。用数学公式描述就是: S h a r p R…

【算法每日一练]-图论(保姆级教程 篇6(图上dp))#最大食物链 #游走

目录 题目:最大食物链 解法一: 解法二: 记忆化 题目:游走 思路: 题目:最大食物链 解法一: 我们标记f[i]是被f[x]捕食的点对应的类食物链数 不难得出: f[x]∑(f[i]) 首先从生…

206 反转链表

解题思路可以有两种方法:递归 or 迭代。 \qquad 迭代:通过使用for循环遍历,完成目标。方法直观,容易理解。 \qquad 递归:通过函数调用其自身,完成目标。递归最复杂、最重要的部分就是递归函数的构建&#…

【数据结构】——栈|队列(基本功能)

目录 栈 基本概念 栈的常见基本操作 栈的存储 ✌栈的基本操作实现 栈的构建 栈的初始化 入栈 打印栈 出栈 获取栈顶元素 获取栈的有效元素个数 判断栈是否为空 销毁栈 队列 基本概念 队列的常见基本操作 ✌队列的基本操作实现 队列的构建 初始化 入队列 出…

Spring Security 6.x 系列(9)—— 基于过滤器链的源码分析(二)

一、前言 在本系列文章: Spring Security 6.x 系列(4)—— 基于过滤器链的源码分析(一)中着重分析了Spring Security在Spring Boot 的自动配置、 DefaultSecurityFilterChain 的构造流程、FilterChainProxy 的构造流…

详解原生Spring当中的事务

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…