在Java中,如何测试对象的监视器是否被锁定? [复制]

2023-11-30

在Java中,如何测试对象的监视器是否被锁定?换句话说,给定一个对象 obj,是否有任何线程拥有 obj 的监视器?

我不关心哪个线程拥有监视器。我需要测试的是是否有任何线程拥有给定对象的监视器。由于当前线程以外的线程可以拥有监视器,因此 Thread.holdsLock( obj ) 是不够的,因为它只检查当前线程。

我正在尝试找出最简单的解决方案。

这不是重复的,因为:

  1. 我无法使用更高级别/更新的并发/锁定机制。我不能使用Lock等。我必须使用低级/旧的/传统的货币/锁定机制,例如synchronized、wait()等。
  2. 我并不是想在监视器解锁时找到执行代码的时间。我试图在监视器锁定时执行代码。

事实上,为了提供一点背景知识,单元测试的这一部分我试图开始运行两个线程,它们都需要锁定同一个对象。

因此,为了测试并发处理是否正确。我需要 1. 创建两个线程。 2. 启动线程1。 3. 一旦线程 1 拥有监视器,就挂起线程 1。 4. 启动线程2。 5. 一旦线程 2 被线程 1 阻塞,就挂起线程 2。 6. 恢复线程 1。 7.加入线程1。 8. 运行一些断言。 9. 恢复线程 2。 10.加入线程2。 11. 运行一些断言。

我试图找出执行 #3 的最佳方法,主要是确定线程 1 何时拥有监视器。


None

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

在Java中,如何测试对象的监视器是否被锁定? [复制] 的相关文章

随机推荐

  • Quartus Prime 中的“多个常量驱动程序”Verilog 错误

    我正在致力于用 Verilog 设计一个有限状态机来表示堆栈 该模块如下 module state machine s Enable Clock Resetn c OF Err UF Err input 2 0 s input Enable
  • 具有表达式的属性中使用的可空 DateTime 返回意外的默认值

    我有以下两个方法扩展 public static class DateTimeConverter public static DateTime Convert this DateTime time gt time null new Date
  • Java中激活其他进程的窗口

    我有两个 Java swing 应用程序 意味着在两个 JVM 中运行 有什么办法可以在它们之间切换吗 通过 Java 代码激活另一个应用程序的窗口 您可以尝试使用JNA 我将使用 Maven 为您提供一些适用于 Windows 的代码 或
  • 在 MySQL 中存储 PDF 文件

    如何将 PDF 文档存储在 MySQL 的字段中 目前 我有一个客户列表 每个客户都有一个包含其帐户信息的证书 他们可以将其提供给其他公司以证明他们是我们的客户 目前 他们的证书以 PDF 格式导出并通过电子邮件发送给工作人员 客户也会收到
  • 导航组件 popUpTo bug

    最近我遇到了我询问的问题here 但当我试图弄清楚发生了什么时 我总是偶然发现同样的问题 这就是我所拥有的 我有一个集合 预览 编辑片段 我需要在片段之间进行导航 但是从编辑片段导航到预览片段后 我希望后退按钮将用户带到集合片段而不是编辑片
  • C# - 从 FTP 下载上次修改日期较高的文件

    我有一个包含一些文件的 FTP 服务器 我在本地目录中有相同的文件 在C 当我运行该程序时 我希望它搜索 FTP 服务器中上次修改时间戳晚于本地目录中相同文件 同名 的所有文件 并下载找到的所有文件 有人可以给我帮助或提示吗 我会感谢所有的
  • 将派生类序列化/反序列化为基类

    例如我有以下课程 public abstract class Device public class WindowsDevice Device public class AndroidDevice Device 现在我想将 WindowsD
  • 如何在 .Net Core Identity 中实施 2FA?

    问题 如何强制现有用户在 Net Core 3 1 Identity 中设置 2FA 我已经在这里看到了几个答案 但我对它们有如下问题 如果用户未设置 2FA 页面 则重定向用户以在登录时设置 2FA 页面 问题是用户可以简单地跳转到不同的
  • 如何使用 Java 将字符串保存到文本文件?

    在 Java 中 我有来自名为 text 的字符串变量中的文本字段的文本 如何将 text 变量的内容保存到文件中 如果您只是输出文本 而不是任何二进制数据 则以下内容将起作用 PrintWriter out new PrintWriter
  • 有条件地单独禁用 Serilog 接收器

    我的 net core 应用程序基本配置上有 Serilog 如下所示 Log Logger new LoggerConfiguration ReadFrom Configuration Configuration Enrich FromL
  • 在 C 中将指针的地址存储在 unsigned int 中

    是否可以将指针强制转换为 unsigned int 然后将其强制转换回指针 我试图将指向结构的指针存储在 pthread t 变量中 但我似乎无法让它工作 这是我的代码的一些片段 我正在创建一个用户级线程管理库 当我尝试打印线程的 tid
  • 打开文件夹并最大化文件夹窗口

    我有以下简单的 Powershell 脚本 ii E Source Development websites example com au root ii E Source Development websites example com
  • 生成所有可能的互质的排序列表

    我需要生成所有互质的无限排序列表 每对中的第一个元素必须小于第二个元素 排序必须按升序进行 按对元素的总和 如果两个总和相等 则除以该对的第一个元素 因此 结果列表必须是 2 3 2 5 3 4 3 5 2 7 4 5 3 7 2 9 3
  • Bootstrap 5 下拉菜单向右截断

    User 的下拉列表是 cuf of 我正在使用 Bootstrap 5 我在 stackoverflow 上阅读了一篇较旧的文章 建议将 dropdown menu left dropdown menu right on the 这对我不
  • 如何使用midlrt.exe将.idl编译为.winmd?

    背景 我需要构建一个 Windows 运行时组件作为设置为使用的系统的一部分CMake生成其构建系统 作为准备步骤 我尝试在命令行上构建它 从简单的 idl 文件 MyType idl 开始 namespace NS default int
  • cookie / MAMP / CodeIgniter 的问题

    我在使用 MAMP 和 Codeigniter 读取本地主机上的 cookie 时遇到问题 我正在尝试使用 cookie 来验证对管理区域的访问 我可以设置 cookie 我在浏览器上看到它 Chrome 但在授予访问权限后我无法读取它 我
  • 接受 Java 中的证书

    我在通过 Java 与 HTTPS 站点交互时遇到问题 我的程序每次运行时都会使用一个带有不受信任证书的 URL 该程序必须在多个系统上运行 目前 我有以下内容 public class A HostnameVerifier hv new
  • Google 日历 API - 未从 Execute() C# 返回

    运行下面的代码永远不会从执行函数返回 我的个人 Gmail 帐户上有一个私人日历 已与developer gserviceaccount com 帐户共享 查看 API 管理器 用法 引用显示我已经使用过甚至点击了该 API 任何想法表示赞
  • 将非结构化 csv 文件转换为数据框

    我正在学习 R 用于文本挖掘 我有一个 CSV 格式的电视节目表 节目通常从早上 06 00 开始 一直持续到第二天凌晨 05 00 称为播出日 例如 2015 年 11 月 15 日的节目从早上 06 00 开始 到次日凌晨 05 00
  • 在Java中,如何测试对象的监视器是否被锁定? [复制]

    这个问题在这里已经有答案了 在Java中 如何测试对象的监视器是否被锁定 换句话说 给定一个对象 obj 是否有任何线程拥有 obj 的监视器 我不关心哪个线程拥有监视器 我需要测试的是是否有任何线程拥有给定对象的监视器 由于当前线程以外的