1

我注意到没有 isWaiting() 方法。是否可以测试是否有任何线程在特定对象上被阻塞 wait() ?给定一个 Thread 对象,是否有可能找到该 Thread 正在等待()的对象(如果有)?

4

2 回答 2

8

好吧,对于等待状态试试thread.getState() == Thread.State.WAITING || thread.getState() == TIMED_WAITING

至于线程等待的对象,我不确定,但我怀疑您是否可以在没有本机代码的情况下获得线程正在等待的对象。反过来,也就是获取持有给定对象锁的线程,对于纯 Java 似乎也是不可能的(参见此处:以编程方式确定哪个 Java 线程持有锁)。

于 2012-04-20T16:44:30.333 回答
0

基本的并发方法可能无法满足您的需求。您可能想尝试 java.util.concurrent 包。可以解决您的问题的示例类之一是ReentrantLock。这是关于线程的完整教程。

于 2012-04-20T17:10:39.250 回答