java-是否有工具来确定程序是否按照JLS中的定义“正确同步”?
作者:互联网
Java语言规范7(JLS7-17.4.5)定义了一个“正确同步”的程序,如下所示:“当且仅当所有顺序一致的执行都没有数据竞争时,程序才正确同步”.
JLS7-17.4.5还指出:
Without correct synchronization, very strange, confusing and counterintuitive behaviors are possible.
因此,从程序员的角度来看,根据上面的定义,使用一种工具来确定程序是否“正确同步”将非常有用.
有这样的工具吗?我无法通过谷歌搜索找到任何东西.如果没有这样的工具,有可能做一个吗?
解决方法:
FindBugs可以找到一些并发性错误(在the list of detected bugs上搜索“多线程正确性”),可能还有其他类似的工具,但是最后,只有通过精心设计和审查代码,才能避免某些错误.
您也可以测试类的并发问题,但这是一种统计游戏,根据OS / CPU架构等,某些错误可能永远不会出现.
我听说过Java concurrency torture工具,但从未使用过.在官方JSR 166 Concurrency Interest list上已多次提及.
标签:java-memory-model,concurrency,java,jls 来源: https://codeday.me/bug/20191031/1975284.html