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