synchronized () 括号中应该传什么对象?

2023-10-27

我看jdk源码的时候发现了这样的代码

同步锁中传入了静态的自定义的类“Lock”
1、这种写法和直接传this有什么区别?
2、类“Lock”定义成静态和不定义成静态有什么区别?

对于代码块同步,也就是synchronized(lock){} 这样的写法,lock这个对象就是 “锁”,当两个并行的线程a,b,当a先进入同步块,即a先拿到lock对象,这时候a就相当于用一把锁把synchronized里面的代码锁住了,现在只有a才能执行这块代码,而b就只能等待a用完了lock对象锁之后才能进入同步块。
那么,就有个问题,要达到这个目的,至少对于a,b两个线程来说,锁必须是唯一的,原因很显然,如果有两把锁,那么a,b大可以各持一把锁,同时进入同步块,这显然是不对的。


先回答第二个:2、类“Lock”定义成静态和不定义成静态有什么区别?
建议使用静态,就如上面说的,锁必须是唯一的,而静态变量,尤其是像上那样定义同时实例化的变量能百分百保证锁是唯一的,而如果变量不是static的,那么你必须自己在代码里面控制,保证至少对于要同步的各个线程来说是唯一的。然后,对于你上面贴出来的代码,lock也必须是static的,因为setRunFinalizerOnExit方法是static的
然后,第一个问题:
1、这种写法和直接传this有什么区别?
本质上没有区别,对于同步线程来说都只是一个锁而已,那么,还是那个问题,必须保证锁是唯一的,this指的是当前类的当前实例,用this作为锁,就必须保证各个线程所持有的ShutDown类的实例对象是同一个。
 

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

synchronized () 括号中应该传什么对象? 的相关文章

  • Keytool 应用程序在哪里?

    我需要在android中使用mapview控件 但我似乎不明白如何运行keytool 是用eclipse安装的吗 我好像找不到下载链接 Thanks keytool http docs oracle com javase 7 docs te
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • 解决错误javax.mail.AuthenticationFailedException

    我不熟悉java中发送邮件的这个功能 我在发送电子邮件重置密码时遇到错误 希望你能给我一个解决方案 下面是我的代码 public synchronized static boolean sendMailAdvance String emai
  • Java:拆箱整数时出现空指针异常?

    此代码导致空指针异常 我不知道为什么 private void setSiblings PhylogenyTree node Color color throws InvalidCellNumberException PhylogenyTr
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • Java:多线程内的 XA 事务传播

    我如何使用事务管理器 例如Bitronix http docs codehaus org display BTM Home JBoss TS http www jboss org jbosstm or Atomikos http www a
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5

随机推荐

  • C++ 描述任意多边形的类及计算其面积和周长

    这是一个可以在平面坐标系中表示任意多边形并且计算其面积和周长的类 不过目前只能在第一象限计算 使用时较简便 只要把多边形的各个顶点传进去就可以了 不用按顺序 其中面积的计算是参考https blog csdn net hemmingway
  • 【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 近年来 随着可再生能源的并网以及非线性负载
  • jenkins 踩坑

    ERROR Failed to parse POMs org apache maven project ProjectBuildingException Some problems were encountered while proces
  • java 加载驱动3种方法_加载jdbc驱动程序的三种不同方式

    1 比较常用 try Class forName com mysql jdbc Driver 加载数据库驱动 String url jdbc mysql localhost 3306 databasename 数据库连接子协议 databa
  • React:通过嵌套对象循环

    问题描述 我正在从strapi 获取数据 我的导航对象的响应如下所示 简化 id 1 title Home order 1 items id 2 title 3D Assets order 1 items id 4 title 3D Pla
  • Linux下OpenCV摄像头录像(c++)

    opencv 从摄像头中读取视频并保存 c 版 YouthDance CSDN博客 opencv 保存摄像头视频 参考如上 CMakeLists txt cmake版本 cmake minimum required VERSION 2 8
  • 【Android】上拉加载更多,下拉刷新数据快速实现

    项目需求 在页面数据中 每次只显示一部分 当手指操作从下往上滑动时 进行请求加载更多数据 当从上往下滑动时 进行整个所有数据的刷新 需求实现 1 引入依赖 刷新 implementation com scwang smart refresh
  • 【满分】【华为OD机试真题2023 JAVA&JS】学校的位置

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 学校的位置 知识点数组贪心排序 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 为了解决新学期学生暴涨的问题 小乐村要建所新学校 考虑到学生上学安全问题 需要所有
  • 【电商数仓】数仓调度之全流程调度(调度数据准备、Azkaban部署、创建数据库和表、Sqoop导出脚本、编写工作流程配置文件、一些注意事项)

    1082条消息 电商数仓 数仓调度之全流程调度 调度数据准备 Azkaban部署 创建数据库和表 Sqoop导出脚本 编写工作流程配置文件 一些注意事项 数仓权限系统和调度系统搭建 OneTenTwo76的博客 CSDN博客
  • uniApp动态更改页面顶部标题

    需求 多个功能公用一个页面 根据上个页面传递过来的参数动态更改顶部标题 onLoad option if option type permit uni setNavigationBarTitle title 许可证页面 else if op
  • ST7701芯片820*320屏幕移植stemwin

    简要说明 如题 公司最近更换820 320屏幕 移植stemwin 使用3线spi通讯 16RGB 这屏幕工作流程为 首先通过3线spi发送初始化指令 之后通过16bitRGB发送像素点 移植过程参考了安富莱 野火 https www nx
  • python爬虫selenium被检测处理(适用淘宝登录)

    1 增加这个是防止检测是webdriver谷歌驱动调起的请求 通用大部分 self chrome execute cdp cmd Page addScriptToEvaluateOnNewDocument source Object def
  • RandomAccessFile 实现文件分片获取发送和写入

    在实现文件上传的过程发现由于文件太大会导致程序接收和发送都出现问题 所以想着实现一个分片发送和写入的方法方便实现大文件上传 查了一些资料 在随机文件流操作时RandomAccessFile 恰好可以满足我的要求 这里主要是如何用Random
  • 怎么使用input执行xss攻击_XSS场景及修复方案总结

    xss原理 跨站脚本攻击 Cross Site Scripting 缩写为XSS 恶意攻击者往Web页面里插入恶意javaScript代码 当用户浏览该页之时 嵌入其中Web里面的javaScript代码会被执行 从而达到恶意攻击用户的目的
  • 大专生学Java真没出路吗?

    现在市场上的众多移动应用 大部分都是用Java做后台开发的 我们大家所熟知的支付宝 美团 淘宝 京东等都是用Java来做后台的 这么多互联网公司对Java如此青睐 这样也就助推Java的生态变得越来的越好 毕竟有大厂背书 生态越好 Java
  • 防范明文密码和散列值抓取

    一 单机密码抓取的防范方法 微软为了防止用户密码在内存中以明文形式泄露 发不了补丁KB2871997 关闭了Wdigest功能 windows server 2012以上版本默认关闭Wdigest 使攻击者无法从内存中获取明文密码 对于wi
  • openerp/odoo 权限解析

    前言 odoo权限管理主要分为4类 1 菜单权限 即未指定的用户组看不到该菜单 缺点 不安全 只是隐藏菜单 若用户知道菜单的id一样可以通过url查看菜单 2 对象级别 即有权限的对象才能有某种功能比如 增删改查的权限 3 记录级别权限 即
  • STM32 GPIO的配置寄存器

    1 STM32 GPIO的配置寄存器 CRL CRH 快速学习 39度C的博客 CSDN博客 配置寄存器 2 STM32 BSRR BRR ODR寄存器详情解析 存储技术 电子发烧友网 3 STM32 GPIO篇 一直在路上的Tom的博客
  • Mysql的redo log详解

    1 介绍 redo日志是在事务提交后生成的 如果此时服务down掉 后期重启可以用redo日志恢复数据 保证事务的持久性 事务提交后永久生效 2 redo日志生成流程 第1步 先将原始数据从磁盘中读入内存中来 修改数据的内存拷贝第2步 生成
  • synchronized () 括号中应该传什么对象?

    我看jdk源码的时候发现了这样的代码 同步锁中传入了静态的自定义的类 Lock 1 这种写法和直接传this有什么区别 2 类 Lock 定义成静态和不定义成静态有什么区别 对于代码块同步 也就是synchronized lock 这样的写