以下类不是线程安全的(如证明以下代码不是线程安全的 https://stackoverflow.com/questions/2410499/proving-the-following-code-not-thread-safe )
是否有一个框架可以帮助进行编译时/运行时分析并告诉我们以下内容不是线程安全的?
对于编译时,理想情况下在 Eclipse 中会出现摆动下划线并告诉我们该类不是线程安全的?
对于运行时,静态代码分析是否会将类捕获为非线程安全?
public class LazyInitRace {
private ExpensiveObject instance = null;
public ExpensiveObject getInstance() {
if (instance == null)
instance = new ExpensiveObject();
return instance;
}
}
FindBugs http://findbugs.sourceforge.net/可以找到代码中线程同步不一致的部分,即您在一个地方同步对字段的访问,但在另一处不同步。它还可以进行基本验证JCIP注释 http://www.javaconcurrencyinpractice.com/annotations/doc/index.html,但我相信目前仅检查 @Immutable 。
我不知道有任何静态分析工具可以自动捕获这种特殊情况,但我确信存在一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)