用Reentrant锁定Java中断所有等待的线程



如果已经获取锁的线程出现异常,有没有任何方法可以中断所有等待锁的线程?

我认为没有什么好办法。

如果创建了ReentrantLock的子类,则该类可以调用getQueuedThreads(),迭代生成的集合,并对每个集合调用interrupt()。然而,这可能充满了种族条件。例如,如果在您执行此操作时另一个线程试图获取锁,则不能保证您会看到该线程。

第二个问题是确定在哪里以及通过什么方式检测到异常。

最新更新