如何找出另一个线程是否在wait()ing?

时间:2012-04-20 16:41:53

标签: java

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

2 个答案:

答案 0 :(得分:6)

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

至于线程等待的对象,我不确定,但我怀疑你可以在没有本机代码的情况下获得线程所要求的对象。另一方面,即使用纯Java来获取锁定给定对象的线程似乎也是不可能的(参见此处:Programmatically determine which Java thread holds a lock)。

答案 1 :(得分:0)

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