Java 语言规范 7 (JLS7-17.4.5) 定义了一个“正确同步”的程序,如下所示:“当且仅当所有顺序一致的执行都没有数据竞争时,程序才能正确同步”。
JLS7-17.4.5 还指出:
如果没有正确的同步,可能会出现非常奇怪、令人困惑和违反直觉的行为。
因此,从程序员的角度来看,拥有一个工具来根据上述定义确定程序是否“正确同步”将非常有用。
有这样的工具吗?我用谷歌搜索找不到任何东西。如果没有这样的工具,是否有可能制作一个?
Java 语言规范 7 (JLS7-17.4.5) 定义了一个“正确同步”的程序,如下所示:“当且仅当所有顺序一致的执行都没有数据竞争时,程序才能正确同步”。
JLS7-17.4.5 还指出:
如果没有正确的同步,可能会出现非常奇怪、令人困惑和违反直觉的行为。
因此,从程序员的角度来看,拥有一个工具来根据上述定义确定程序是否“正确同步”将非常有用。
有这样的工具吗?我用谷歌搜索找不到任何东西。如果没有这样的工具,是否有可能制作一个?
FindBugs可以找到一些并发错误(在检测到的错误列表中搜索“多线程正确性” ),并且可能还有其他类似的工具,但最终只能通过细致的代码设计和审查才能避免一些错误。
您还可以测试您的类是否存在并发问题,但这是一个统计游戏,并且某些错误可能永远不会出现,具体取决于 OS/CPU 架构等。
我听说过Java 并发拷问工具,但从未使用过。它在官方JSR 166 并发兴趣列表中被多次提及。