在高度并发的系统中,很难确信您对锁的使用是正确的。具体来说,如果在另一个线程中以正确的顺序获取锁时,如果以非预期的顺序获取锁,则可能导致死锁。
有一些工具(例如 Coverity)可以对代码库进行静态分析并寻找“不寻常的”锁定顺序。我想探索其他选项来满足我的需求。
是否有任何用于检测 Java 代码的轻量级*工具,可以检测以非预期顺序获取锁的情况?我可以通过注释/注释明确调用锁定命令。
首选免费和/或开源解决方案。如果有解决此问题的非仪器方法,也请发表评论。
* 就我而言,轻量级意味着...
- 如果是仪表,我仍然可以以相同的性能运行我的程序。我想 30-50% 的降级是可以接受的。
- 我不必花半天时间与该工具进行交互来获得“好的”。理想情况下,我应该只在出现问题时才注意到我正在使用它。
- 如果是仪表,那么在生产环境中应该很容易禁用。
synchronize
它不应该在每条语句中都弄乱我的代码。如前所述,我可以明确地注释/注释被相对顺序锁定的对象或对象类。