我想知道 Lock
检测周期有多复杂以及它有多少开销。实际上,我认为它应该相当简单,但 Java 中缺乏它让我不确定。
有an answer建议使用 tryLock
,但恕我直言,这种检测是语言应该开箱即用的(作为选项)。
我发现的唯一类似的东西是 Guava 的 CycleDetectingLockFactory ,但它有一些不小的开销和 doesn't try捕获所有死锁。
最佳答案
我相信这可能是 O(N**3) ,因为您可以在对象上持有 X 锁,每个对象都由 Y 个其他线程等待,每个线程可以持有 Z 锁。然后你必须对它们进行拓扑排序以检测循环。
关于java - 死锁检测的成本如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035366/