synchronized和ReentrantLock区别简介说明

2023-11-12

在多线程开发中,需要锁定指定代码块,使其在同一时间只能由一个线程运行,我们日常开发中常用的同步锁有:

synchronized和ReentrantLock,那么他们两者之间到底有什么不同之处呢?

下文笔者讲述synchronized和ReentrantLock区别简介说明,如下所示

区别1:

灵活性不同

    synchronized是关键字,无灵活性
    ReentrantLock是类
      可利用里面的各种方法操作,也可继承此类编写相应的方法

区别2:

    synchronized无可操作性
    ReentranLock了设置锁的等待时间,避免死锁
    ReentranLock可获取锁的信息
    ReentranLock可实现多路通知

区别3:底层实现方式不同

   synchronized 是在对象头中加入mark word字段
    ReentrantLock底层是调用Unsafe的park方法加锁

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

synchronized和ReentrantLock区别简介说明 的相关文章

  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • #git的储存原理探索

    git的储存原理探索 在Git中 每个commit ID的信息 如cc127537978af35e2f502da7e8d22e340ed810e5 就是一个SHA 1 Hash值 它是对那个commit是Git仓库中内容和头信息 Heade
  • stm32、IO口、中断、串口、定时器讲解

    目录 一 IO口的八种模式 二 IO口的配置 三 外部中断配置 四 串口配置 五 定时器配置 六 项目 一 IO口的八种模式 输入 浮空输入 浮空 顾名思义 就相当与此端口在默认情况下什么都不接 呈高阻态 这种设置在数据传输时用的比较多 上
  • android面试题大全 android面试题总结

    android面试题大全 android面试题总结 1 Android系统的架构 Android系统架构之应用程序 Android会同一系列核心应用程序包一起发布 该应用程序包包括email客户端 SMS短消息程序 日历 地图 浏览器 联系
  • 有序顺序表中插入一个元素,使其仍然有序

    define MAXSIZE 100 define OK 1 define OVERFLOW 2 include
  • 红外视觉1:近红外与中远红外图像

    红外视觉1 近红外与中远红外图像 这篇博客将介绍红外成像的基础知识 包括 什么是红外图像 近红外与中远 远红外 Near vs Mid Far Infrared Far infrared 红外热像仪的类型 用途 红外视觉简介 近红外与中远红
  • java 自带的小命令 javac

    今天要用 windows 下的dos 命令行来执行一个小demo 发现了如下小坑 使用命令 在当前 java 文件中 执行 javac Hello java 执行成功并且在当前文件夹下 坑 找不到或无法加载主类 第一个中情况猜想CLASSP
  • tarball安装GnuPG (gpg) 2.2.10

    https www gnupg org download mac 方式一 推荐 mac brew install gpg pinentry pinentry mac echo pinentry program usr local bin p
  • vue 读取本地excel文件

    一 安装依赖 npm install xlsx save 或 npm instatll xlsx 0 17 0 save 建议安装低版本 npm install file saver save 二 引入 import axios from
  • 【前端】JS异步加载

    文章目录 为什么要异步加载 如何实现异步加载 参考 为什么要异步加载 两个原因其实是一个意思 原因1 JS是单线程的语言 它会同步的执行代码 从上往下执行 但是 一旦网络不好 或要加载的js文件过大的话 会造成页面阻塞 不利于后续的渲染工作
  • Android中高级面试必知必会,成功定级腾讯T3-2

    前言 今天我给大家再次分享一下 我最近的一些读书的感想 思考起来 确实能够给自己带来一些真实的帮助和启发 希望大家在平时的工作学习中 也能够认清楚学习的一些本质 如果我们的学习是在不断掌握应对具体工作场景和问题的方法 那就是在努力提升技术效
  • 记一次R的可视化使用-生成城市各个景点的多边形图

    项目中需要用到全国各个城市的景点坐标范围 需要人工审核各个景点的数据正确性和各个景点之间的距离分布 首先想到的就是使用R绘制每个景点的多边形区域 首先通过python 根据数据生成R绘图代码 当然这里的R绘图代码非常简单 利用原始数据拼接成
  • 大数据用户画像之Oozie、Hue集成Spark2 应用调度

    一 Oozie 大数据调度工具 1 1 官方介绍 1 Oozie是一个管理 Apache Hadoop 作业的工作流调度系统 2 Oozie的 workflow jobs 是由 actions 组成的 有向无环图 DAG 3 Oozie的
  • java写一个多人线上聊天室

    java写一个多人线上聊天室 多线程 备注 课程实验作业 留作自用 效果如下 以下四个程序在一个包里 JavaMain java public class JavaMain public static void main String ar
  • JMeter压力测试与JVM监控以及调优

    一 性能指标 响应时间 Response Time RT 响应时间指用户从客户端发起一个请求开始 到客户端接收到从服务器端返回的响 应结束 整个过程所耗费的时间 HPS Hits Per Second 每秒点击次数 单位是次 秒 TPS T
  • 程序员转岗面试经

    整理下最近面试被问到的问题吧 以供各位参考 ps 本人计划转岗 转行 想从程序员转到对外岗位 所以最近面的主要是两个方向 售前 项目管理 基本面试问题 1 自我介绍 这个问题是通用性的 基本回答点是 问好 我是谁 我做过哪些 我有哪些能力
  • Assets/FollowDestination.cs(6,13): error CS0246: The type or namespace name `NavMeshAgent' could not...

    问题的出现与描述 在Unity中创建一个NPC 使它一直跟踪一个目标Destination C 脚本代码如下 错误信息描述如下 using System Collections using System Collections Generi
  • 各省简称 拼音 缩写_全国所有城市拼音及缩写

    LUOHE LH 洛阳 LUOYANG LY 潞西 LUXI LX 泸州 LUZHOU LZ 吕梁 LVLIANG LL 旅顺 LVSHUN LS 马鞍山 MAANSHAN MAS 茂名 MAOMING MM 梅河口 MEIHEKOU MH
  • vue el-button获取按钮的值_那些Vue开发遇到的坑---响应式系统

    Vue是目前使用较为广泛的前端框架之一 相比React Vue更容易学习上手 毕竟在React中万物皆JavaScript 这让一些习惯于编写HTML JavaScript的程序员不太乐于接受 相比之下 Vue的模板语法它不香么 当然 Vu
  • html5进阶

  • synchronized和ReentrantLock区别简介说明

    在多线程开发中 需要锁定指定代码块 使其在同一时间只能由一个线程运行 我们日常开发中常用的同步锁有 synchronized和ReentrantLock 那么他们两者之间到底有什么不同之处呢 下文笔者讲述synchronized和Reent