在Java中,如何测试对象的监视器是否被锁定?换句话说,给定一个对象 obj,是否有任何线程拥有 obj 的监视器?
我不关心哪个线程拥有监视器。我需要测试的是是否有任何线程拥有给定对象的监视器。由于当前线程以外的线程可以拥有监视器,因此 Thread.holdsLock( obj ) 是不够的,因为它只检查当前线程。
我正在尝试找出最简单的解决方案。
这不是重复的,因为:
- 我无法使用更高级别/更新的并发/锁定机制。我不能使用Lock等。我必须使用低级/旧的/传统的货币/锁定机制,例如synchronized、wait()等。
- 我并不是想在监视器解锁时找到执行代码的时间。我试图在监视器锁定时执行代码。
事实上,为了提供一点背景知识,单元测试的这一部分我试图开始运行两个线程,它们都需要锁定同一个对象。
因此,为了测试并发处理是否正确。我需要
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(使用前将#替换为@)