从发行说明中,checkstyle 删除了双重检查锁定检查。
我很难理解为什么。他们不仅在发行说明中而且在问题跟踪器中都回答了这个问题:
删除了 DoubleCheckedLocking 检查,就像在 Java 5(及更高版本)中一样,使用 volatile 关键字解决了这个问题。
我假设,如果 checkstyle 正在删除此警告,那是因为它不再有用。也就是说,要么错误不再发生,要么另一个警告完成了这项工作。但
我不明白为什么 Java 5 中不会再发生这样的错误,或者它是如何被另一个警告补充的。有人可以解释一下吗?
编辑:我了解添加 volatile 关键字如何解决问题。我担心的是:这个警告难道不值得吗?我正在考虑程序员使用上述锁定模式但忘记声明变量 volatile 的情况。checkstyle 不应该仍然警告它吗?