java - 死锁检测的成本如何?

标签 java concurrency deadlock guava

我想知道 Lock 检测周期有多复杂以及它有多少开销。实际上,我认为它应该相当简单,但 Java 中缺乏它让我不确定。

an answer建议使用 tryLock,但恕我直言,这种检测是语言应该开箱即用的(作为选项)。

我发现的唯一类似的东西是 Guava 的 CycleDetectingLockFactory ,但它有一些不小的开销和 doesn't try捕获所有死锁。

最佳答案

我相信这可能是 O(N**3) ,因为您可以在对象上持有 X 锁,每个对象都由 Y 个其他线程等待,每个线程可以持有 Z 锁。然后你必须对它们进行拓扑排序以检测循环。

关于java - 死锁检测的成本如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035366/

相关文章:

java - 使用 Netbeans 7 和 Axis2 从属性文件为客户端配置 Web 服务 URL

java - 如何访问基于数组中字符串的方法?

java - 创建 SingleBlockingQueue 同步器

java - 如何可靠地创建和检测线程死锁

mysql - SELECT FOR UPDATE 和 INSERT ON DUPLICATE KEY UPDATE 导致 MYSQL 中同一行插入时出现死锁

java - Elasticsearch on AWS 用户身份验证

java - 访问 SortedSet 中特定元素的最有效方法是什么?

Javascript 信号量/测试和设置/锁定?

java - 可重用Executor、ServiceExecutor等接口(interface)的目的

Java 程序在调度并运行 TimerTask 后永远不会退出