是否有工具来确定程序是否按照JLS中的定义“正确同步”?

时间:2013-01-18 13:33:26

标签: java concurrency jls java-memory-model

Java语言规范7(JLS7-17.4.5)定义了一个“正确同步”的程序,如下所示:“当且仅当所有顺序一致的执行都没有数据争用时,程序才能正确同步”。

JLS7-17.4.5还声明:

  

如果没有正确的同步,很可能会出现非常奇怪,混乱和违反直觉的行为。

因此,从程序员的角度来看,根据上述定义,使用工具确定程序是否“正确同步”将非常有用。

有这样的工具吗?谷歌上面找不到任何东西。如果没有这样的工具,是否可以制作一个?

1 个答案:

答案 0 :(得分:4)

FindBugs可以找到一些并发错误(在the list of detected bugs上搜索“多线程正确性”)并且可能还有其他类似的工具,但最终只能通过细致的代码设计来避免一些错误审查。

您还可以测试类的并发性问题,但它是一个统计游戏,根据OS / CPU架构等,可能永远不会显示一些错误。

我听说过Java concurrency torture工具,但从未使用过它。官方JSR 166 Concurrency Interest list已经多次提到它。